Esta é uma dúvida recorrente entre as turmas de SQL Server. Como executar um comando do prompt do Windows através de um script t-SQL.
O xp_cmdshell é a procedure de sistema usada para executar comandos, tais como do prompt de comando do Windows.
Obviamente que por motivos de segurança esta feature vem desabilitada no SQL Server.
Como funciona a segurança
Quando executamos um comando através do xp_cmdshell este utiliza a credencial chamada ##xp_cmdshell_proxy_account##, logo se esta credencial não existir ela poderá ser criada utilizando a sp_xp_cmdshell_proxy_account passando como parâmetro usuário do Windows e a senha.
Utilizamos este método para dar permissão a um usuário que não é sysadmin, porém também é possível dar esta permissão utilizando “Grant exec on xp_cmdshell to sqlcrespi ”
Dependendo da regra utilizada ainda é possível utilizar o contexto de segurança para outro login utilizando o execute as login.
Na prática para habilitar e executar um comando de prompt basta seguir o exemplo abaixo:
Para verificar se o cmd_Shell está habilitado
select name, value_in_use from sys.configurations where name = 'xp_cmdshell'
Para habilitar o cmd_Shell
sp_configure 'Advanced option' , 1 reconfigure go sp_configure 'xp_cmdshell', 1 go sp_configure 'Advanced option' , 0 reconfigure
Exemplo
Executando Xcopy para copiar o backup do diretório D: para o diretório S:
xp_cmdshell 'xcopy D:\aw.bak S:\ /y /s /v'
Abraço, Rodrigo