Hey Guys!
Neste post, vou demonstrar como realizar operações com arquivos utilizando a procedure xp_cmdshell, como copiar arquivos, excluir, renomear, mover, criar diretórios, etc.
Esse post é um complemento de outros de operações com arquivos, utilizando outras soluções:
- Operações com arquivos utilizando OLE Automation no SQL Server
- SQL Server – Como listar, ler, escrever, copiar, excluir e mover arquivos com o CLR (C#)
Para ativar o xp_cmdshell, basta executar o comando abaixo:
1 2 3 4 5 |
sp_configure 'advanced options', 1 RECONFIGURE sp_configure 'xp_cmdshell', 1 RECONFIGURE |
stpArquivo_Existe stpArquivo_Listar stpArquivo_Ler stpEscreve_Arquivo stpApaga_Arquivo stpCopia_Arquivo stpMove_Arquivo stpCria_Diretorio stpApaga_Diretorio
Como já comentei em alguns posts aqui no blog, não sou nada fã de habilitar e utilizar o xp_cmdshell, uma vez que ele dá “poderes” para qualquer usuário sysadmin da instância executar qualquer comando que o usuário que inicia o serviço do SQL Server possui privilégio, desde um comando dir, até executar delete, format, etc..
Por este motivo, prefiro adotar a utilização do CLR, onde você programa as rotinas utilizando a linguagem de programação C# e o .NET Framework e publica as rotinas na instância. Tanto os usuários sysadmin quanto os usuários normais só conseguem utilizar os métodos implementados na biblioteca CLR, não permitindo a execução de códigos maliciosos que não estejam programados, mas entendo que nem todo DBA quer ter o trabalho de criar bibliotecas em C# e acaba optando por utilizar uma abordagem mais simples, utilizando xp_cmdshell e comandos do DOS e/ou PowerShell.
And that's it, folks!
Espero que tenham gostado desse post e até a próxima.
Tentei mover arquivo, mas deu “Access denied”. Que perfil falta?
Obrigado me ajudou bastante