SQL Server 2008 R2:更改计算机名称后的问题

Geo*_*Ego 10 instance sql-server-2008-r2

更改托管本地 SQL Server 实例的远程服务器的计算机名称后,我遇到了一个令人困惑的问题。

基本上,远程服务器从一个站点移动到另一个站点。为方便起见,我将旧数据库备份并恢复为新数据库名称,清除数据,以便将其用作客户端软件的新数据库。我还更改了计算机名称,因为我们总是这样做以通过其站点编号识别每个服务器。

客户端软件可以连接数据库就好了,我可以直接登录SQL Server就好了。但是,我的 SQL Server 代理作业之一失败,事件日志中出现错误:

SQL Server 计划作业“夜间重置”(0x4F76FDFFF6DFFE4EA0DE4A70252AD3BD) - 状态:失败 - 调用时间:2012-02-07 08:10:05 - 消息:作业失败。无法确定作业 Nightly Reset 的所有者 (Site-19\Admin) 是否具有服务器访问权限(原因:无法获取有关 Windows NT 组/用户“Site-19\Admin”的信息,错误代码 0x534。[SQLSTATE 42000](错误 15404))。

现在,“Site-19”是旧的计算机名称,已更改,服务器已重置。我使用“Site-28”(新站点编号)手动连接,它显示我已通过 Site-28\Admin 连接到 SQL Server。但是,当我查看代理作业的属性时,它显示所有者为 Site-19\Admin,当我尝试浏览用户以更改它时,Site-28\Admin 没有显示为选项,仅 Site-19\Admin。如果我从中编写一个新作业并手动将所有者更改为“Site-28\Admin”,则新作业将使用所有者“Site-19\Admin”创建。

查看 sys.servers(或通过 sp_helpserver),我只有一个条目:当前计算机名称。但是, SELECT @@SERVERNAME 返回原始开发机器名称(两次名称更改前)。

简而言之,我无法运行这个重要的 SQL Server 代理作业,因为它属于一个不再存在的用户,我无法弄清楚如何更改它或将其创建为正确的用户。

小智 7

当您使用 sp_addserver 添加新服务器名称时,您是否记得包括“本地”名称。正是该标记更新@@SERVERNAME 的元数据。 更多信息。

sp_addserver 'servername', local
Run Code Online (Sandbox Code Playgroud)


Geo*_*Ego 7

我昨天在我朋友的帮助下找到了答案。我必须通过 SSMS 使用我尝试使用的 Windows 登录名以外的用户登录,删除旧登录名,然后再次添加我的 Windows 登录名。之后,我能够正确地转移作业的所有权,SQL 能够从 Windows 获取用户数据,一切都很好。