用SQL Server执行Server上命令

出现了无法登录Server的情况,又要在上面运行一些简单的程序,比如启动一个服务,运行一个批处理等。

--1. 启用高级选项,让xp_cmdshell可开关,如果xp_cmdshell已经打开,则不需要1、2

EXEC sp_configure 'show advanced options', 1
GO
--重新配置
RECONFIGURE
GO
--2. 启用xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
--重新配置
RECONFIGURE
GO


--3. 执行想要的命令,如果有多个命令用&&连接,我碰到的情况是必须exe所在目录执行,所以就得先cd到那个目录,再执行exe,否则找不到配置文件,例子如下:
exec xp_cmdshell 'cd.. && dir'

GO

到止想做的事已经做完了,但凡事要善始善终,打开高级选项和启用xp_cmdshell都组服务器留下了安全隐患,如果有必要就应当关闭这两项。
--4. 关闭xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 0
GO
--重新配置
RECONFIGURE
GO

--5. 停用高级选项,让xp_cmdshell可开关,如果xp_cmdshell已经打开,则不需要1、2

EXEC sp_configure 'show advanced options', 0
GO
--重新配置
RECONFIGURE
GO

顺序和打开的顺序刚好相反。

另外,1,2,3可以先从3执行,3不行就先执行2,再执行3,如果2执行失败只能从1执行到3,这样倒过来执行一下,原来的状态就能判断出来了。选择性关闭4和5也是必要的,防止影响其他应用。