¿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:
xp_cmdshell
proc (exec master..xp_cmdshell 'del C: \ Test \ Test.txt') 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.