Criando CLR em C# para apagar um arquivo via SQL Server
Como podemos criar CLR para apagar um arquivo via SQL Server, neste post será demonstrado passo a passo de como fazer.
Primeiramente abra seu Visual Studio, feito isso, será necessário criar um novo projeto, para isso, siga os procedimentos descritos abaixo:
- Selecione a opção File -> New ->Project;
- Selecione a opção SQL Server -> SQL Server Database Project;
- Informe o nome do projeto que nesse caso é ‘DeleteFile’;
- Clique em ‘OK’.
As configurações devem estar conforme a imagem abaixo.
Pronto, criamos o projeto, agora será criada a classe que será responsável por deletar o arquivo via SQL Server.
Para criar a classe, siga os procedimentos descritos abaixo.
- Clique no nome do projeto com botão direito do mouse;
- Selecione a opção ‘Add’ -> ‘New Item…’
- Selecione a opção ‘SQL CLR C#’;
- Escolha a opção ‘SQL CLR C# User Defined Function’;
- Defina o nome, que nesse caso é ‘DeleteFile.cs’;
- Clique em ‘Add’.
As configurações devem estar conforme a imagem abaixo.
Pronto, classe foi criada com sucesso, agora será implementado o método responsável por deletar o arquivo.
O código da classe deverá ficar conforme o código abaixo.
using System; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; using System.IO; public class DelFile { [Microsoft.SqlServer.Server.SqlFunction] public static SqlString FileDelete(SqlString Path) { try { if (!Path.IsNull) { File.Delete(Path.Value); return "O arquivo " + Path.Value + " foi apagado com sucesso."; } else { return "Arquivo/Caminho não informado!!!"; } } catch (Exception ex) { return ex.Message; } } }
Pronto, agora basta compilar e vamos adicionar nosso código no SQL Server.
Após conectarmos no SQL Server e selecionar qual base de dados utilizaremos será necessário alterar a opção ‘TRUSTWORTHY’, para isso, execute o código abaixo.
ALTER DATABASE T_SQL SET TRUSTWORTHY ON GO
Para saber um pouco mais sobre ‘TRUSTWORTHY’, leia o post do Luan no link a seguir: Porque Utilizar a Opção TRUSTWORTHY.
Agora será criado o assembly com o código que criamos no c#, para isso, execute o código abaixo, lembrando de alterar o diretório para o diretório que criou seu projeto.
CREATE ASSEMBLY DeleteFile FROM 'C:SQLServerDeleteFileDeleteFilebinDebugDeleteFile.dll' WITH PERMISSION_SET = EXTERNAL_ACCESS
Depois de criar o assembly deve-se criar a função que irá executar o assembly, conforme o código abaixo.
CREATE FUNCTION FN_FILEDELETE(@V_CAMINHO_ARQUIVO NVARCHAR(150)) RETURNS NVARCHAR(150) WITH EXECUTE AS CALLER AS EXTERNAL NAME DeleteFile.DelFile.FileDelete GO
Depois de criar todos os itens acima com sucesso, basta executar a Function que irá apagar o arquivo passado por parâmetro, conforme exemplo abaixo.
SELECT DBO.FN_FILEDELETE('C:SQLServerteste.txt')
Para o download do Projeto que foi criado, clique aqui.
Nenhum comentário