Comme indiqué dans d'autres réponses, l'astuce (dans SQL 2005 ou une version ultérieure) consiste à modifier les paramètres de configuration globale pour les éléments suivants show advanced options
y xp_cmdshell
a 1
dans cet ordre.
De plus, si vous voulez conserver les valeurs précédentes, vous pouvez les lire à partir de sys.configurations
d'abord, puis les appliquer en ordre inverse à la fin. Nous pouvons également éviter les reconfigure
appels :
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
Notez que cela repose sur la version 2005 ou ultérieure de SQL Server (la question initiale portait sur la version 2008).