最近发现一个SQL 代理的一个作业无法自动运行,察看作业历史记录发现
”作业失败。 无法确定所有者(TPCN\Administrator,拥有作业 wuhj)是否有访问服务器的权限(原因: 未能获得有关 Windows NT 组/用户 'TPCN\Administrator' 的信息。 [SQLSTATE 42000](错误 8198)).“
于是就去SQL 代理中更改作业的所有者,但是发现一个奇怪问题
“计算机名称更改以后,无法添加、更新或删除从msx服务器上发起的作业(或其步骤或调度)”
网上一般的方法是
use msdb
SP_CONFIGURE 'ALLOW UpdateS',1 RECONFIGURE WITH OVERRIDE
GO
update sysjobs set originating_server=@@servername
go
SP_CONFIGURE 'ALLOW UpdateS',0 RECONFIGURE WITH OVERRIDE
GO
但是不好用,查询了一下@@servername 还是原来的机器名,与现有的机器名不一样
经查询SERVERPROPERTY 函数的 ServerName 属性与 @@SERVERNAME 返回相似的信息。ServerName 属性提供 Windows 服务器和实例名称,两者共同构成唯一的服务器实例。@@SERVERNAME 提供当前配置的本地服务器名称。
这样就很清楚了,用如下的方法可以更改
sp_configure 'allow updates',1 reconfigure with override
go
update sysjobs set originating_server = convert(varchar(50),serverproperty('servername'))
go
sp_configure 'allow updates',0 reconfigure with override
go
这样后,任务的所有者可以更改了,本实例的数据库是SQL 2000