他の回答に記載されているように、(SQL 2005以降では)トリックのためのグローバル構成設定を変更することであるshow advanced options
とxp_cmdshell
し1
、そのためには、。
これに加えて、以前の値を保持したい場合は、sys.configurations
最初から値を読み取り、最後に逆の順序で適用できます。不要なreconfigure
呼び出しを回避することもできます。
declare @prevAdvancedOptions int
declare @prevXpCmdshell int
select @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
reconfigure
end
if (@prevXpCmdshell = 0)
begin
exec sp_configure 'xp_cmdshell', 1
reconfigure
end
/* do work */
if (@prevXpCmdshell = 0)
begin
exec sp_configure 'xp_cmdshell', 0
reconfigure
end
if (@prevAdvancedOptions = 0)
begin
exec sp_configure 'show advanced options', 0
reconfigure
end
これはSQL Serverバージョン2005以降に依存していることに注意してください(元の質問は2008年でした)。