quinta-feira, 20 de agosto de 2009

Executar comandos DOS no SQLServer

A stored procedure xp_cmdshell é utilizada para executar comandos no DOS pelo SQLServer
Por default o SQLServer vem com opção de uso da xp_cmdshell desabilitado, sendo necessário habilitar manualmente pelo administrador do banco.
A liberação da xp_cmdshell implica em alguns riscos de segurança, pesquise sobre os riscos e avalie sua necessidade.
Quando é chamado por um usuário que não é um membro da função de servidor fixa sysadmin, xp_cmdshell se conecta ao Windows usando o nome da conta e a senha armazenadas na credencial chamada ##xp_cmdshell_proxy_account##. Se essa credencial de proxy não existir, xp_cmdshell falhará.
Para habilitar a opção de uso da xp_cmdshell:
sp_configure 'xp_cmdshell', '1'
GO
Reconfigure
Go

Aqui vai um exemplo usando o comando Dir C:\*.*:

Declare @DirCmd as Varchar(100)
Declare @Return as Varchar(Max)
Drop Table #dirlist
CREATE TABLE #dirlist ([FName] NVARCHAR(1000), [DS] VARCHAR(14), [CreateDate] DATETIME)
SET @DirCmd = 'dir C:\*.*'
EXEC @Return = master..xp_cmdshell @DirCmd

Nenhum comentário:

Postar um comentário