首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server 2008 R2:计算机名称更改后的问题

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

Database Administration用户
提问于 2012-02-07 14:13:17
回答 4查看 31.8K关注 0票数 10

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

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

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

Server计划作业‘夜间重置’(0x4F76FDFFF6DF4FE4EA0DE4A70252AD3BD)-状态:失败-调用on: 2012-02-07 :10:05-消息:作业失败。无法确定作业夜间重置的所有者(Site-19\Admin)是否具有服务器访问权限(原因:无法获得有关Windows组/用户'Site-19\Admin',错误代码0x534的信息。SQLSTATE 42000)。

现在,'Site-19‘是旧的计算机名,它已经被更改,服务器已经被重置。我使用新的站点号' site -28‘手动连接,它显示我正与Site-28\Admin连接到Server。但是,当我查看代理作业的属性时,它将所有者显示为Site-19\Admin,而当我试图浏览用户以更改它时,Site-28\Admin不会显示为选项,只显示Site-19\Admin。如果我从这个任务中写出一个新作业,并手动将所有者更改为'Site-28\Admin',那么新作业将与所有者'Site-19\Admin‘一起创建。

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

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

EN

回答 4

Database Administration用户

回答已采纳

发布于 2012-02-22 02:03:27

昨天我在一位朋友的帮助下找到了答案。我必须通过SSMS与我试图使用的Windows登录之外的用户登录,删除旧的登录,并再次添加我的Windows登录。在那之后,我能够正确地转移工作的所有权,SQL能够从Windows获得用户数据,而且一切都是正确的。

票数 7
EN

Database Administration用户

发布于 2012-02-07 22:02:23

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

代码语言:javascript
复制
sp_addserver 'servername', local
票数 7
EN

Database Administration用户

发布于 2012-02-07 14:42:54

我使用以下方法来识别问题并构建正确的drop和add语句,如果您得到了所有的OK,那么您就不需要做任何事情了,否则您需要运行这些命令。

代码语言:javascript
复制
declare @currentName as nvarchar(128)
declare @newName as varchar(max)
declare @serverName as varchar(max)
declare @serverInstance as varchar(max)

select  @currentName = @@SERVERNAME
select @serverInstance = cast(serverproperty('InstanceName') as varchar(max))
select  @serverName = cast(serverproperty('MachineName') as varchar(max))

set @newName = @serverName

if (@serverInstance <> '') 
begin
      set @newName = @serverName + '\' + @serverInstance
end

if (@currentName <> @newName)
Begin
      print 'sp_dropserver ''' + @currentName + '''';
      print 'go'
      print 'sp_addserver ''' + @newName + ''',local'
      print 'go'
end
else
Print 'ALL OK'
票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/12388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档