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

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'

cmdshell

Abraço, Rodrigo

Autor: 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 um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s