Как удалить запрошенный файл резервной копии (.bak)?

#sql-server #sql-server-2005

#sql-server #sql-server-2005

Вопрос:

Я использую SQL Server 2005 и выше, и мне интересно, есть ли способ удалить определенный файл резервной копии из папки резервных копий SQL по умолчанию…

Я могу найти эту папку резервных копий, используя запрос ниже:

 EXEC  master.dbo.xp_instance_regread
N'HKEY_LOCAL_MACHINE', N'SoftwareMicrosoftMSSQLServerMSSQLServer',N'BackupDirectory'
  

Единственным способом, который я нашел, было использование операции master.dbo.xp_delete_file, но проблема в том, что она не может удалить только один файл (запрошенный).

Есть идеи?

Комментарии:

1. Можете ли вы отредактировать свой вопрос, включив в него вызов xp_delete_file , чтобы мы могли объяснить вам, почему вызов работает не так, как вы ожидаете?

2. Вызов xp_delete_file операции работает, но она может очищать только резервные копии старше запрошенной даты: EXECUTE master.dbo.xp_delete_file 0,N'E:Database_Backups',N'bak','2009-03-07T16:45:17',1 я ищу способ удалить запрошенный файл резервной копии…

Ответ №1:

Вы могли бы использовать xp_cmdshell для создания командной оболочки Windows и выполнения заданной строки, как в:

xp_cmdshell 'del "E:Database BackupsSome Database Backup.bak"'

В сочетании с вашим кодом для определения папки резервной копии по умолчанию вы могли бы создать соответствующую строку для удаления определенного файла.

Обратите внимание, что xp_cmdshell по умолчанию он заблокирован по соображениям безопасности (очевидно, что запуск любой произвольной командной строки был бы неправильным).

Комментарии:

1. Спасибо Майкл, это работает нормально, но я не могу использовать xp_cmdshell из-за проблем с безопасностью (ни в одной подходящей компании администратор базы данных не разрешит бесплатный доступ к своим серверам).