Планы обслуживания базы данных являются неотъемлемыми инструментами в SQL Server, которые помогают настраивать планы резервного копирования и оптимизации. Эти планы часто используются начинающими администраторами баз данных для настройки полных резервных копий, резервных копий журнала транзакций и обслуживания индексов. Однако могут возникать ситуации, когда задание плана обслуживания не выполняется из-за ошибки, указывающей на то, что владелец задания не имеет доступа к серверу.
Одной из распространенных причин этой проблемы является ситуация, когда новый администратор баз данных берет на себя управление средой SQL Server, а владелец плана обслуживания не обновлен. Рассмотрим пример, когда администратор баз данных SQL Server (DBA1) создает план обслуживания для резервного копирования SQL на сервере ‘A’. Позже DBA1 уходит из организации, и нанимается новый администратор баз данных (DBA2) для управления серверами SQL. При анализе состояния сервера ‘A’ DBA2 обнаруживает, что задание резервного копирования не выполняется. Проведя расследование, DBA2 понимает, что владелец задания все еще установлен на учетную запись DBA1.
Чтобы навсегда решить эту проблему, DBA2 должен изменить владельца плана обслуживания на подходящую учетную запись, такую как ‘SA’ или учетную запись, назначенную для выполнения задания. Таким образом, владелец задания будет автоматически обновляться при внесении изменений в задание или план обслуживания, что исключает риск сбоев задания из-за небрежности.
Изменение владельца плана обслуживания в SQL Server 2000
Чтобы изменить владельца плана обслуживания в SQL Server 2000, выполните следующие шаги:
- Выполните следующий запрос, чтобы получить текущие имена планов и владельцев ваших планов обслуживания:
- Чтобы изменить владельца плана обслуживания, выполните следующий код, заменив ‘LoginName’ на имя, полученное на предыдущем шаге:
- Если у вас есть несколько владельцев планов, повторите шаг 2 для каждого имени входа, полученного на предыдущем шаге.
USE MSDB;
SELECT plan_name, owner
FROM dbo.sysdbmaintplans;USE MSDB;
UPDATE dbo.sysdbmaintplans
SET owner = 'sa'
WHERE owner = 'LoginName';Изменение владельца плана обслуживания в SQL Server 2005 и более поздних версиях
Для SQL Server 2005, 2008 и 2008 R2 процесс изменения владельца плана обслуживания немного отличается:
- Выполните следующий запрос, чтобы проверить текущие детали всех настроенных планов обслуживания на SQL Server:
- Чтобы изменить владельца плана обслуживания в SQL Server 2005, выполните следующий запрос:
- Если вы используете SQL Server 2008 или 2008 R2, выполните следующий запрос:
USE MSDB;
SELECT *
FROM dbo.sysmaintplan_plans;USE MSDB;
UPDATE msdb.dbo.sysdtspackages90
SET OWNERSID = SUSER_SID('YOUR_DOMAIN\APPROPRIATE_ACCOUNT')
WHERE OWNERSID = SUSER_SID('YOUR_DOMAIN\OLD_ACCOUNT');USE MSDB;
UPDATE msdb.dbo.sysssispackages
SET [ownersid] = SUSER_SID('sa')
WHERE [name] = 'MaintenancePlan';Следуя этим шагам, вы легко можете изменить владельца плана обслуживания в SQL Server и обеспечить безупречное выполнение задания без проблем, связанных с доступом.
Надеюсь, что этот статья была полезной для тех, кто сталкивался с этой проблемой в прошлом, и послужит ценным уроком для тех, кто может столкнуться с ней в будущем.
Обратите внимание, что я не могу участвовать в форумах, веб-сайтах или блогах на компьютере моей компании, поэтому моя ответ может задержаться.