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

解决方案 »

  1.   

    --參考
    (1)修正 @@servername请使用以下的程式码,直接执行修正即可,无须填写任何资料。执行完成后,系统会自动关机,您仅需重新启动 SQL Server 即可。
    DECLARE @sn sysname,@sno sysname;
    SELECT @sn=cast(serverproperty('servername') as sysname),@sno=@@SERVERNAME;
    IF @sno IS NULL
     BEGIN
      EXEC sp_addserver @server=@sn,@local = 'local';
      SELECT N'Finish the server name to revise, and has already stopped serving, please restart the server';
      SELECT N'完成伺服器名稱修改,並已停止服務,請重新啟動伺服器';
      SHUTDOWN WITH NOWAIT;
      RETURN;
     END
    ELSE IF (@sn=@sno)
     BEGIN
      SELECT N'Do not need to revise the server name';
      SELECT N'無須修正伺服器名稱';
      RETURN;
     END
    ELSE
     BEGIN
      EXEC sp_dropserver @sno;
      EXEC sp_addserver @server=@sn,@local = 'local';
      SELECT N'Finish the server name to revise, and has already stopped serving, please restart the server';
      SELECT N'完成伺服器名稱修改,並已停止服務,請重新啟動伺服器';
      SHUTDOWN WITH NOWAIT;
     END
    (2)修正本机伺服器的登入帐号若是原本就有允许本机的 Administrator可以管理 SQL Server 时(例如:ServerName\Administrator),请先将此帐号删除后,再度重新加入到 SysAdmin 角色内。虽然预设 BUILTIN\Administrators 管理群组的成员可以自动具备登入与管理 SQL Server 的权限,但经过测试,在 Replication 等某些作业上,仍然会有问题。 (3)修正 SQL Server 安装程式为不同的 SQL Server 服务所建立使用者群组SQL Server 安装程式会为不同的 SQL Server 服务建立使用者群组,并依适当情况将服务帐户加入这些使用者群组中。这些群组不仅可简化授与执行 SQL Server 服务与其他可执行档所需权限的过程,也有助于保护 SQL Server 档案。例如:SQL Server 服务部分:
    预设执行个体:SQLServer2005MSSQLUser$ComputerName$MSSQLSERVER
    具名执行个体:SQLServer2005MSSQLUser$ComputerName$InstanceName
    ...建议删除这些群组,重新建立群组与指派权限。
    文章出处:http://www.diybl.com/course/7_databases/sql/sqlServer/200863/120800.html
      

  2.   

    改了主机名的话,可以先用
    sp_dropserver 'old server name'
    go
    sp_addserver 'new server name', local
    go重启sql server这样select @@servername就会显示正确的名字另外如果msdb里面的主机名是old server name的话,你可以打开里面的sysjobs表,直接手动修改里面的server名字...
      

  3.   

    在sysjobs表中没有server 此字段啊......请问楼上究竟在那个表