您的位置:首页 > 运维架构 > Shell

關於 xp_cmdshell 的使用

2014-03-16 22:00 405 查看

1. xp_cmdshell 簡介

xp即eXtended Procedure,MSSQL中以XP打頭的系統SP都是擴展存儲過程。xp_cmdshell 可以傳遞一串命令給CMD去執行。為了安全,這個功能在MSSQL中默認是未開啟的,開啟方法見BOI文檔

-- To allow advanced options to be changed.
EXEC sp_configure 'show advanced options', 1;
GO
-- To update the currently configured value for advanced options.
RECONFIGURE;
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1;
GO
-- To update the currently configured value for this feature.
RECONFIGURE;
GO
2. xp_cmdshell在T-SQL中的典型應用

a)用 xp_cmdshell 執行 bcp 進行數據的導入與導出

b)用 xp_cmdshell中 映射網絡驅動器,遠程拷貝文件,比如將數據庫備份後,再拷貝到其他服務器上,間接實現遠程備份

c)用xp_cmdshell调用powershell

3.一個常見問題

相同命令在CMD中可以成功執行,但放到SSMS中用 xp_cmdshell  來執行卻頻頻報錯。

網上找資料,很多說是 xp_cmdshell 的權限問題,其實歸根到底是sql server服務MSSQLSERVER的權限問題,它的三個內置帳戶(Built-in Account):Local System、Network Service 和 Local Service 的權限依次降低,但也有不同的限制。 具體請猛擊這...裏

所以,解決以上問題可以通過依次切換那三個帳戶,重啟SQL服務,然後再試驗看運行結果的方式來進行,如果三個帳戶都是各種報錯,就配置以管理員的帳戶。

操作方法:開始----Microsoft SQL Server----配置工具----SQL Server服務----SQL Server(MSSQLSERVER),右鍵屬性:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: