Criando CLR em C# para apagar um arquivo via SQL Server

Tudo sobre banco de dados e SQL

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:

  1. Selecione a opção File -> New ->Project;
  2. Selecione a opção SQL Server -> SQL Server Database Project;
  3. Informe o nome do projeto que nesse caso é ‘DeleteFile’;
  4. 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.

  1. Clique no nome do projeto com botão direito do mouse;
  2. Selecione a opção ‘Add’ -> ‘New Item…’
  3. Selecione a opção ‘SQL CLR C#’;
  4. Escolha a opção ‘SQL CLR C# User Defined Function’;
  5. Defina o nome, que nesse caso é ‘DeleteFile.cs’;
  6. 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

Adicione seu comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.