最近发现一个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



posted on 2010-05-31 14:45  晚 星  阅读(1703)  评论(0编辑  收藏  举报