Я прочитал много разных подходов и решений, которые преследовали несколько человек при попытке решить проблему с помощью расширенной хранимой процедуры xp_delete.
Решения:
- Не забудьте указать точку (.) В расширении при настройке задачи обслуживания служб SSIS.
- Обязательно нажмите на подпапки «Включить первый уровень», если они существуют для каждой резервной копии базы данных.
- Обязательно нажмите на файлы резервной копии вверху. Задача обслуживания действительно проверяет тип файла. Я считаю, что для резервного копирования базы данных проверяется заголовок файла резервной копии.
В моем сценарии все вышеперечисленное было верным. Есть несколько комментариев в Интернете, где некоторые из них сказали, что подпрограмма xp_delete содержит ошибки.
Когда файлы резервных копий не удалялись, я извлек SQL для обслуживания и запустил его из SSMS. Полученное сообщение было файлом, а не файлом резервной копии сервера SQL. Это сообщение было ошибочным, поскольку резервная копия могла быть успешно восстановлена, что привело к созданию рабочей базы данных.
Команды базы данных, использованные для проверки базы данных:
RESTORE HEADERONLY FROM DISK = N'<file path\filename>.Bak'
RESTORE VERIFYONLY FROM DISK = N'<file path\filename>.bak'
Обе приведенные выше команды указали, что файл резервной копии был действительным.
Затем я открыл окно просмотра событий и обнаружил сообщения, указывающие на наличие ошибок входа в систему для диспетчера соединений. Это было странно, потому что я проверил соединение кнопкой проверки соединения. Ошибки не были связаны ни с одной учетной записью, которую я создал.
Сообщение о событии:
* Не найдено описание для события с кодом 17052 из исходного сервера MS SQL. Либо компонент, который вызывает это событие, не установлен на локальном компьютере, либо установка повреждена. Вы можете установить или восстановить компонент на локальном компьютере.
Если событие возникло на другом компьютере, отображаемая информация должна была быть сохранена вместе с событием.
Следующая информация была включена в событие:
Уровень серьезности: 16 Ошибка: 18456, ОС: 18456 [Microsoft] [Собственный клиент SQL Server 11.0] [SQL Server] Ошибка входа для пользователя «домен \ имя_сервера $». *
Затем я вошел на компьютер, где xp_delete работал правильно. Изучив активный каталог и не найдя системную учетную запись, я перешел к средству просмотра событий, чтобы найти похожие сообщения. Здесь стало очевидно, что учетная запись для домена \ сервера $ привязана к безопасности системы.
Следующим шагом было сравнение безопасности базы данных, где xp_delete работал, с базой данных, где она не работала. В базе данных было 2 пропущенных входа в систему безопасности, где xp_delete не работал.
2 отсутствующих логина были:
NT AUTHORITY \ SYSTEM
NT Service \ MSSQLSERVER
После добавления службы NT \ MSSQLSERVER успешно сработал xp_delete.
Один из подходов к тестированию - использовать задачу обслуживания для удаления отдельного файла.