最近我要在SQL Server 2008上做数据库复制的实验,需要用到两台服务器,所以我需要同时开2个虚拟机(VPC),当然我不可能去单独安装2个SQL Server,安装过程太费时了,所以我是在一个虚拟机中安装了SQL2008,然后将该虚拟机文件复制了一个出来,然后还原成另外一个虚拟机,这样我就可以同时使用2个虚拟机来做复制的实验了。我先在虚拟机SQL2008RC0中安装了Windows2003操作系统,机器名为MS-ZY,然后安装SQL Server 2008,所以数据库的服务器名也就是MS-ZY。
接下来复制过去还原成虚拟机SQL2008RC02,当两个虚拟机都打开的情况下,如果都是MS-ZY的服务器名,那将无法识别,所以我将第二个虚拟机的机器名修改为MS-ZY2。这个我就可以使用SSMS通过这个名字来访问第二个数据库了。
一起看起来都不错,已经将这两个服务器通过名字分开了,而且我们通过SSMS也的确看到了2个不同的服务器:
但是在配置复制的时候却出了问题,我在MS-ZY上配置了数据库分发,配置成功,接下来想在MS-ZY2上配置订阅,可是却报错。于是我就试一下在MS-ZY2上配置分发,同样报错,报错内容为:
显然,我虽然在操作系统中将机器名修改为MS-ZY2了,但是在数据库中仍然使用的MS-ZY作为服务器名。怎么办呢?唯一的办法就是修改数据库的服务器名。
请教了一下公司的同事,具体修改过程:
1.使用select @@ServerName可以看到当前数据库的服务器名,果然还是MS-ZY!
2.从Sys.SysServers表中可以看到当前的所有服务器名,也是MS-ZY!
3.使用 sp_dropserver 'MS-ZY' 将这个服务器名删除。
4.使用 sp_addserver 'MS-ZY2','LOCAL'将本地服务器重新添加到服务器表中,并且命名为MS-ZY2.
5.查询Sys.SysServers表,果然已经修改了。
6.重启数据库服务,修改完成,可以正常使用复制功能了 :)
其实操作还是十分的简单,但是由于修改服务器名这种情况实在太少见了,一般都是使用默认的,所以很多人都不知道如果修改,写下此文,希望对遇到和我相同问题的人有所帮助。