¿Podemos eliminar el file físico del server cuando borro la input correspondiente de la database?

¿Podemos eliminar el file físico del server cuando borro la input correspondiente de la database?

es decir, C: \ Test \ Test.txt -> al eliminar este logging de la database, necesito eliminar el file Test.txt correspondiente de la location mencionada. ¿Hay alguna manera? Estoy usando SQL 2008.

Cualquier ayuda sería altamente apreciable ..

Gracias

Las forms son:

  • uso de xp_cmdshell proc (exec master..xp_cmdshell 'del C: \ Test \ Test.txt')
  • utilice el .NET CLR inseguro proc (necesita escribir en cualquier idioma .NET e implementarlo en el server sql. Es una historia larga)

Ambas forms son feas

Y una vez más , es la peor práctica. El server no debe eliminar files de usuario ni ningún file, ya que no son parte integral de su database.

Puede usar CREATE TRIGGER FOR DELETE para crear un disparador que se ejecuta cuando se eliminan las filas. La statement de SQL que se ejecuta después de la eliminación puede recorrer la tabla deleted para get las filas eliminadas. Para cada fila puede exec xp_cmdshell . xp_cmdshell está deshabilitado de manera pnetworkingeterminada, por lo que debe habilitarlo primero utilizando exec sp_configure .

No probé esto, pero creo que debería funcionar.

Intente escribir un procedimiento almacenado que tenga el nombre de file como parámetro y elimínelo usando:

 exec master.dbo.xp_cmdshell 'del <Filename>' 

luego crea un desencadenante para después de eliminar en la tabla que contiene los nombres de file que llama al procedimiento almacenado y proporciona el nombre de file de la tabla eliminada , o maby puedes ejecutar directamente el command exec master.dbo.xp_cmdshell 'del' desde el desencadenador.

La mejor manera sería save los files como un Objeto en la Base de datos en lugar de la ruta del file, y al eliminarlo, simplemente elimine el file Objeto.