1.
“消息 15281,级别 16,状态 1,过程 xp_cmdshell,第 1 行
SQL Server 阻止了对组件 'xp_cmdshell' 的 过程'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 'xp_cmdshell'。有关启用 'xp_cmdshell' 的详细信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器". ”
解决方法:
sqlserver2005时
EXEC sp_configure N'show advanced options', N'1'
RECONFIGURE WITH OVERRIDE
EXEC sp_configure N'xp_cmdshell', N'1'
RECONFIGURE WITH OVERRIDE
EXEC sp_configure N'show advanced options', N'0'
RECONFIGURE WITH OVERRIDE
如果不是sqlserver2005可使用如下的方法(我没有实验)
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE
RECONFIGURE:指定如果配置设置不需要服务器停止并重新启动,则更新当前运行的值,如果没有这个关键字的话将要重新启动sqlserver服务才能生效。
Remind:开启执行顺序是'show advanced options',然后才执行'xp_cmdshell'。,如果要关闭这个高级选项的话,要先执行'xp_cmdshell'然后再执行'show advanced options'。数字1代表开启,0代表关闭。
如果cmdshell还不行的话,就再运行:
dbcc addextendedproc("xp_cmdshell","xplog70.dll");--
或者
sp_addextendedproc xp_cmdshell,@dllname='xplog70.dll'
来恢复cmdshell。
2.
执行 master.dbo.xp_cmdshell 'osql -U sa -P 123456 -i d:\test.sql'