参考文章:
1、http://www.cnblogs.com/liuw/archive/2009/02/18/1393119.html
sql2000和sql2005共享的连接问题
2、http://www.cnblogs.com/jason-lee/archive/2008/03/19/1113893.html
数据库复制——从SQL Server 2000向SQL Server 2005迁移数据库数据库复制
环境说明:
服务器:win2003+sql server 2000、sql server 2005
实例: server\sql2000、server\sql2005
客户机:win2003+sql server 2005(经试验,同样适用于sql server 2008)
目的:配置发布和订阅实现从服务器到客户机的数据同步
部署过程中遇到的问题:
1、客户机上的sql server 2005不能连接服务器上的sql server 2000实例。
通过阅读参考文章1后,服务器上安装sql server 2000 sp4后,通过 server\sql2000,1433可以连接到实例server\sql2000。
2、在配置发布和订阅的过程中,用server\sql2000,1433连接时会报“SQL Server 复制需要有实际的服务器名称才能连接到服务器”错误。
为了用server\sql2000不带端口的方式连接,停掉了服务器上的server\sql2005实例后,可以直接用server\sql2000连接了,
参照参考文章2,但建议在创建订阅时选择“在分发服务器上运行代理”,我开始选的“在订阅服务器上运行代理”,一直不能实时更新数据。
完成了发布和订阅的部署后,经测试,大概在3秒左右可以完成数据的同步(我要同步的表不多,7张左右)。
如果安装完sql后,改过计算机名,也会报“SQL Server 复制需要有实际的服务器名称才能连接到服务器”错误,解决办法如下:
在数据库执行下边的sql语句(详细参见http://blog.csdn.net/by84788186/archive/2009/02/20/3915169.aspx)
use master
go
if serverproperty('servername') <> @@servername
begin
declare @server sysname
set @server = @@servername
exec sp_dropserver @server = @server
set @server = cast(serverproperty('servername') as sysname)
exec sp_addserver @server = @server , @local = 'LOCAL'
end
如果连接数据库时,只能用IP连接,不能用计算机名连接,请参照:
http://hi.baidu.com/wloo/blog/item/5535ce3338520746ac4b5f3b.html/cmtid/328d82ca94dcf78dc91768d5
3、为了还能使用server\sql2005实例,将server\sql2005配置为使用动态端口,重新开启了server\sql2005实例,
发现连接的时候竟然连到server\sql2000的实例上去了(可能是虽然设置了使用动态端口,也开启sql server browse服务,但客户端默认先找还是1433端口),
所以将server\sql2005实例改成使用静态的非默认端口,可以正常使用了,不过客户端在连接的时候,一定要记得加端口号。