Most production systems these-days have xp_cmdshell disabled as a security precaution, rightly so. If you NEED to execute an operating-system command best to use this sort-of routine …
--cmdshell.sql -- DECLARE @cmd varchar(100) = 'shutdown /r' -- DECLARE @cmd varchar(100) = 'shutdown -r -f -t 0' DECLARE @cmd varchar(100) = 'Dir' -- DEBUG ... is xp_cmdshell enabled? SELECT case when value_in_use = 1 then 'YES' else 'no' end [is CMDSHELL enabled] FROM sys.configurations where name = 'xp_cmdshell' IF (SELECT value_in_use /* cmd shell is disabled */ FROM sys.configurations WHERE name = 'xp_cmdshell') = 0 BEGIN exec sp_configure 'show advanced options', 1 reconfigure -- show advanced options exec sp_configure xp_cmdshell, 1 reconfigure -- enable command-shell exec xp_cmdshell @cmd -- run the command exec sp_configure 'xp_cmdshell', 0 reconfigure -- disable command-shell exec sp_configure 'show advanced options', 0 reconfigure -- hide advanced options END ELSE /* cmd shell is enabled */ exec xp_cmdshell @cmd -- just run the command -- DEBUG ... is xp_cmdshell enabled? SELECT case when value_in_use = 1 then 'YES' else 'no' end [is CMDSHELL enabled] FROM sys.configurations where name = 'xp_cmdshell'
(NOTE: executing sp_configure by itself will show the current settings)