170.解决计算机名修改或作业移植导致的服务名称问题

92 阅读1分钟
USE msdb

--获取当前SQL Server的实例名
DECLARE @servername sysname
SET @servername=CAST(SERVERPROPERTY('servername') as nvarchar(128))

--检查是否存在作业的源服务器与当前实例名不同名的作业,如果存在,则更新
IF EXISTS(SELECT * FROM sysjobs WHERE originating_server<>@servername)
BEGIN
	--因为要修改系统表,所以设置允许更新系统表
	EXEC sp_configure 'allow updates',1
	RECONFIGURE WITH OVERRIDE
	
	--将作业的来源服务器设置为当前实例
	UPDATE sysjobs SET originating_server=@servername
	WHERE originating_server<>@servername

	--关闭系统表更新功能
	EXEC sp_configure 'allow updates',0
	RECONFIGURE WITH OVERRIDE
END