从sql2000 复制数据到sql2005

参考文章:
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实例改成使用静态的非默认端口,可以正常使用了,不过客户端在连接的时候,一定要记得加端口号。
原文地址:https://www.cnblogs.com/gjung/p/1571005.html