#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
из-за проблем с безопасностью (ни в одной подходящей компании администратор базы данных не разрешит бесплатный доступ к своим серверам).