最近我要在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.重启数据库服务,修改完成,可以正常使用复制功能了 :)
其实操作还是十分的简单,但是由于修改服务器名这种情况实在太少见了,一般都是使用默认的,所以很多人都不知道如果修改,写下此文,希望对遇到和我相同问题的人有所帮助。