国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > shell > 正文

xp_cmdshell

2024-07-21 02:06:45
字體:
來源:轉載
供稿:網友
xp_cmdshell
  新增信息 - 2001 年 9 月

以操作系統命令行解釋器的方式執行給定的命令字符串,并以文本行方式返回任何輸出。授予非管理用戶執行 xp_cmdshell 的權限。



說明  在 microsoft® windows® 98 操作系統中執行 xp_cmdshell 時,將不把 xp_cmdshell 的返回代碼設置為喚醒調用的可執行文件的進程退出代碼。返回代碼始終為 0。


語法
xp_cmdshell {'command_string'} [, no_output]
參數
'command_string'

是在操作系統命令行解釋器上執行的命令字符串。command_string 的數據類型為 varchar(8000) 或 nvarchar(4000),沒有默認值。command_string 不能包含一對以上的雙引號。如果由 command_string 引用的文件路徑或程序名稱中有空格,則需要使用一對引號。如果使用嵌入空格不方便,可考慮使用 fat 8.3 文件名作為解決辦法。

no_output

是可選參數,表示執行給定的 command_string,但不向客戶端返回任何輸出。
返回代碼值
0(成功)或 1(失敗)
結果集
執行下列 xp_cmdshell 語句將返回當前目錄的目錄列表。

xp_cmdshell 'dir *.exe'

行以 nvarchar(255) 列的形式返回。

執行下列 xp_cmdshell 語句將返回隨后的結果集:

xp_cmdshell 'dir *.exe', no_output

下面是結果:

the command(s) completed successfully.
注釋
xp_cmdshell 以同步方式操作。在命令行解釋器命令執行完畢之前,不會返回控制。

當授予用戶執行權限時,用戶能在 microsoft windows nt® 命令行解釋器上執行運行 microsoft sql server™ 的帳戶有權執行的任何操作系統命令。

默認情況下,只有 sysadmin 固定服務器角色的成員才能執行此擴展存儲過程。但是,也可以授予其他用戶執行此存儲過程的權限。

當作為 sysadmin 固定服務器角色成員的用戶喚醒調用 xp_cmdshell 時,將在運行 sql server 服務的安全上下文中執行 xp_cmdshell。當用戶不是 sysadmin 組的成員時,xp_cmdshell 將模擬使用 xp_sqlagent_proxy_account 指定的 sql server 代理程序的代理帳戶。如果代理帳戶不能用,則 xp_cmdshell 將失敗。這只是針對于 microsoft® windows nt® 4.0 和 windows 2000。在 windows 9.x 上,沒有模擬,且 xp_cmdshell 始終在啟動 sql server 的 windows 9.x 用戶的安全上下文下執行。



說明  在早期版本中,獲得 xp_cmdshell 執行權限的用戶在 mssqlserver 服務的用戶帳戶上下文中運行命令。可以通過配置選項配置 sql server,以便對 sql server 無 sa 訪問權限的用戶能夠在 sqlexecutivecmdexec windows nt 帳戶的上下文中運行 xp_cmdshell。在 sql server 7.0 中,該帳戶稱為 sqlagentcmdexec。現在,不是 sysadmin 固定服務器角色成員的用戶將在該帳戶上下文中運行命令,而無需再進行配置更改。


權限
xp_deletemail 的執行權限默認授予 sysadmin 固定服務器角色的成員,但可以授予其他用戶。



重要  如果為 mssqlserver 服務選用的 windows nt 帳戶不是本地管理員組的成員,則非 sysadmin 固定服務器角色成員的用戶將無法執行 xp_cmdshell。


示例a. 返回可執行文件列表
下例顯示執行目錄命令的 xp_cmdshell 擴展存儲過程。

exec master..xp_cmdshell 'dir *.exe'
b. 使用 windows nt net 命令
下例顯示 xp_cmdshell 在存儲過程中的使用。下例先用 net send 通知用戶 sql server 即將關閉,然后用 net pause 暫停服務器,最后用 net stop 關閉服務器。

create proc shutdown10asexec xp_cmdshell 'net send /domain:sql_users ''sql server shutting down in 10 minutes. no more connections allowed.', no_outputexec xp_cmdshell 'net pause sqlserver'waitfor delay '00:05:00'exec xp_cmdshell 'net send /domain: sql_users ''sql server shutting down in 5 minutes.', no_outputwaitfor delay '00:04:00'exec xp_cmdshell 'net send /domain:sql_users ''sql server shutting down in 1 minute. log off now.', no_outputwaitfor delay '00:01:00'exec xp_cmdshell 'net stop sqlserver', no_output
c. 不返回輸出
下例使用 xp_cmdshell 執行命令字符串,且不向客戶端返回輸出。

use masterexec xp_cmdshell 'copy c: qldumps/pubs.dmp / erver2/backups qldumps', no_output
d. 使用返回狀態
在下例中,xp_cmdshell 擴展存儲過程也給出了返回狀態。返回代碼值存儲在變量 @result 中。

declare @result intexec @result = xp_cmdshell 'dir *.exe'if (@result = 0) print 'success'else print 'failure'
e. 將變量內容寫入文件
下例將 @var 變量的內容寫入當前服務器目錄下名為 var_out.txt 的文件中。

declare @cmd sysname, @var sysnameset @var = 'hello world'set @cmd = 'echo ' + @var + ' > var_out.txt'exec master..xp_cmdshell @cmd
f. 將命令的結果捕獲到文件
下例將當前目錄的內容寫入當前服務器目錄中名為 dir_out.txt 的文件中。

declare @cmd sysname, @var sysnameset @var = 'dir/p'set @cmd = @var + ' > dir_out.txt'exec master..xp_cmdshell @cmd

請參見


create procedure

execute

創建安全帳戶

系統存儲過程(常規擴展過程)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 赞皇县| 宝应县| 调兵山市| 潼关县| 蕲春县| 卢龙县| 云南省| 肥西县| 株洲县| 娄烦县| 大悟县| 龙川县| 信丰县| 建平县| 建昌县| 亚东县| 滦平县| 阿荣旗| 铁岭县| 西贡区| 仁化县| 中阳县| 九寨沟县| 商城县| 皮山县| 烟台市| 乡宁县| 巨野县| 石河子市| 安徽省| 张家口市| 吉林省| 阿勒泰市| 故城县| 城固县| 田林县| 西乌珠穆沁旗| 信丰县| 安溪县| 永州市| 华池县|