Executando Comandos do Prompt

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

[code language=”sql”]
select name, value_in_use from sys.configurations
where name = ‘xp_cmdshell’
[/code]

Para habilitar o cmd_Shell

[code language=”sql”]

sp_configure ‘Advanced option’ , 1

reconfigure

go

sp_configure ‘xp_cmdshell’, 1

go

sp_configure ‘Advanced option’ , 0

reconfigure

[/code]

Exemplo

Executando Xcopy para copiar o backup do diretório D: para o diretório S:

[code language=”sql”]

xp_cmdshell ‘xcopy D:\aw.bak S:\ /y /s /v’

[/code]

cmdshell

Abraço, Rodrigo

Author: SQLCrespi

Rodrigo Crespi é MVP Data Platform, MCT, MCSE, MCSA, MCIT, MCDBA e MCP em SQL Server, possuí outras certificações em .NET Framework, Dynamics CRM e etc. Iniciou trabalhando com SQL Server na versão 6.5 na época como desenvolvedor, logo direcionou a sua carreira para a área de administração de bancos de dados. Atualmente é Sócio da CrespiDB – Soluções em Plataformas de Dados, além de professor universitário na Uniftec – Caxias do Sul Autor de diversos artigos publicados em sites e revistas sobre SQL Server e engenharia de software, mantem o canal SQLCrespi no Youtube, o blog SQLCrespi, além de ser dedicado ao SQL Server RS PASS Chapter Leader do grupo de profissionais em SQL Server do Rio Grande do Sul.

Deixe uma resposta