一只名叫tom的猫
在其他的答案上市,招(2005年或以后SQL)是改变全局配置设置show advanced options和xp_cmdshell到1,在这个顺序。此外,如果要保留以前的值,可以先读取它们sys.configurations,然后以相反的顺序应用它们。我们还可以避免不必要的reconfigure通话:declare @prevAdvancedOptions intdeclare @prevXpCmdshell intselect @prevAdvancedOptions = cast(value_in_use as int) from sys.configurations where name = 'show advanced options'select @prevXpCmdshell = cast(value_in_use as int) from sys.configurations where name = 'xp_cmdshell'if (@prevAdvancedOptions = 0)begin exec sp_configure 'show advanced options', 1 reconfigureendif (@prevXpCmdshell = 0)begin exec sp_configure 'xp_cmdshell', 1 reconfigureend/* do work */if (@prevXpCmdshell = 0)begin exec sp_configure 'xp_cmdshell', 0 reconfigureendif (@prevAdvancedOptions = 0)begin exec sp_configure 'show advanced options', 0 reconfigureend请注意,这依赖于SQL Server 2005版或更高版本(原始问题适用于2008年)。