当我从数据库中删除相应的条目时,我们可以从服务器中删除物理文件吗?
即,C:\ Test \ Test.txt - >从数据库中删除此记录时,我需要从提到的位置删除相应的Test.txt文件。 有没有办法,我使用的是SQL 2008。
任何帮助都会非常明显......
谢谢
答案 0 :(得分:3)
方法是:
xp_cmdshell
proc(exec master..xp_cmdshell'del C:\ Test \ Test.txt')两种方式都很难看
再一次 - 这是最糟糕的做法。服务器不应删除用户文件或任何文件,因为它们不是其数据库的组成部分。
答案 1 :(得分:1)
您可以使用CREATE TRIGGER FOR DELETE
创建在删除行时运行的触发器。删除时运行的SQL语句可以遍历表deleted
以获取已删除的行。每行可以exec xp_cmdshell
。默认情况下,xp_cmdshell处于禁用状态,因此您必须先使用exec sp_configure
启用它。
答案 2 :(得分:1)
我没有对此进行过测试,但我认为它应该可行。
尝试编写一个以文件名作为参数的存储过程,并使用以下命令将其删除:
exec master.dbo.xp_cmdshell 'del <Filename>'
然后在包含调用存储过程的Filenames的表上创建一个触发器后触发器并从表 deleted 提供Filename,或者maby你可以直接运行命令exec master.dbo.xp_cmdshell来自触发器的'del'。
更好的方法是将文件保存为数据库中的对象而不是文件路径,删除时只删除文件对象。