Можем ли мы удалить физический файл с сервера при удалении соответствующей записи из базы данных? - PullRequest
4 голосов
/ 18 января 2012

Можем ли мы удалить физический файл с сервера при удалении соответствующей записи из базы данных?

Т.е., C: \ Test \ Test.txt -> при удалении этой записи из базы данных мне нужно удалить соответствующий файл Test.txt из указанного места. Есть ли способ, я использую SQL 2008.

Любая помощь будет весьма заметна ..

Спасибо

Ответы [ 3 ]

3 голосов
/ 18 января 2012

Способы:

  • использование xp_cmdshell proc (exec master..xp_cmdshell 'del C: \ Test \ Test.txt')
  • использовать небезопасный процесс .NET CLR (нужно писать на любом языке .NET и развертывать на сервере sql. Это долгая история)

Оба пути безобразны

И еще раз - это худшая практика. Сервер не должен удалять пользовательские файлы или любые файлы, если они не являются неотъемлемой частью его базы данных.

1 голос
/ 18 января 2012

Я не проверял это, но я думаю, что это должно работать.

Попробуйте написать хранимую процедуру с именем файла в качестве параметра и удалите ее, используя:

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

затем создайте триггер для после удаления в таблице, содержащей имена файлов, которая вызывает хранимую процедуру и предоставляет имя файла из таблицы Удалено , или, возможно, вы можете запустить команду exec master.dbo.xp_cmdshell напрямую del 'от спускового крючка.

Лучшим способом было бы сохранить файлы как объект в базе данных вместо пути к файлу, а при удалении вы просто удаляете файл объекта.

1 голос
/ 18 января 2012

Вы можете использовать CREATE TRIGGER FOR DELETE для создания триггера, который запускается при удалении строк.Оператор SQL, выполняемый при удалении, может пройти по таблице deleted, чтобы получить удаленные строки.Для каждого ряда это может exec xp_cmdshell.xp_cmdshell отключен по умолчанию, поэтому сначала необходимо включить его, используя exec sp_configure.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...