在SQL中使用链接服务器取数据小结

         这阵子做一个需要从另外一个服务器去数据的项目。在网上问了一下朋友,有的说使用复制数据库,任何在做同步。考虑到取得数据不是很多,而且对数据库的同步不是很熟。所以只好用连接服务器来做。
         第一步就是建立连接服务器。两个存储过程完成这一步。
None.gif EXEC  sp_addlinkedserver  @server = ' PCP ' @srvproduct = '' , @provider = ' SQLOLEDB ' , @datasrc = ' Remove Server ' , @catalog = ' DbTest '
None.gif
None.gif
exec  sp_addlinkedsrvlogin  @rmtsrvname = ' PCP ' , @useself = ' false ' , @locallogin = ' user1 ' , @rmtuser = ' user2 '

        第二步就是把数据查询出来,这一步花了我很多时间,因为查询时的语句都想这样的: select PCP.数据库名.dbo.表名.字段名 from PCP.数据库名.dbo.表名.字段名。 因为字段名前缀个数大于3,所以要不字段的前缀都去掉,而表名的前缀都保留。好在我的表都没有重名的字段,不然就麻烦了。好,数据都出来了,不过数度有点慢,不知道各位怎么处理速度问题。
     
        最后我是把这些查询语句做成存储过程,但这下又出问题了,语法检查通过了,但保存的时候提示要设置ANSI_NULLS ,ANSI_WARNINGS。于是我找了些资料,知道ANSI_NULLS 要在存储过程的第一行设定,ANSI_WARNINGS要在AS后面设置。在测试的机器上设好了,没问题,可以保存,重新打开一看,ANSI_NULLS 不见,但存储过程可以运行。不知道这个ANSI_NULLS 是怎么消失的。好,先不管这个问题,赶紧到真的服务器设定,在检查语法时却提示存储过程的第一行要为 Create PROCEDURE 。折腾了很久没办法。只好把测试上的存储过程生产SQL脚本。任何再导入真的数据库中。最后总算OK了。

         就这个问题,花了我差不多一天的数据,所以现在记录下来,给其他人做个参考,少走点弯路。

转载于:https://www.cnblogs.com/weisai/archive/2006/10/19/533727.html

你可能感兴趣的:(在SQL中使用链接服务器取数据小结)