★SqlServer 中 link serve的使用

原文地址:http://zzh.javaeye.com/blog/278847

 

问题描述:

      日本数据库服务器中有两个数据库A,B

      现在要将B数据库迁移到中国,

      但是A,B之间有表的关联。

实现结果:

      A,B之间的数据库实现同时更新。

 

解决方案:

     采用SQLServer中的link server

实现步骤:

     1 建立与日本方的link server,日方服务器为:172.18.1.6;取别名:linkServerJP 

        语法为

        sp_addlinkedserver   N'linkServerJP',   '   ',   N'SQLOLEDB',   N'172.18.1.6'

     2 将本地用户sa 访问权限映射到名为  linkServerJP  的链接服务器上的   SQL   Server   授权登录   Visitor。  

        假设 用户名为:develop  密码为:password

        语法为

        sp_addlinkedsrvlogin   N'linkServerJP',   false,   N'sa',   N'develop',   N'pssword'  

     3 远端数据库访问方式: 服务器名.数据库名.dbo.表名

        例如 linkServerJP.test.dbo.student

简单举例:

        查询日本服务器上的student表

        select username from linkServerJP.test.dbo.student;

       其他操作类同

 

 

参考资料:

   http://topic.csdn.net/t/20021101/10/1138996.html

  创建链接服务器以访问   SQL   Server   数据库    
   
  执行   sp_addlinkedserver   创建链接服务器,指定   SQLOLEDB   作为   provider_name,指定运行   SQL   Server   远程实例的服务器的网络名称作为   data_source。    
  例如,若要创建一个名为   LinkSQLSrvr   的链接服务器,以便对运行于网络名称为   NetSQLSrvr   的服务器上的   SQL   Server   实例进行操作,请执行:  
   
  sp_addlinkedserver   N'LinkSQLSrvr',   '   ',   N'SQLOLEDB',   N'NetSQLSrvr'  
   
  将每个需要访问链接服务器的本地   SQL   Server   登录映射为链接服务器上的   SQL   Server   授权登录。    
  下例将本地登录   Joe   的访问权限映射到名为   LinkedSQLSrvr   的链接服务器上的   SQL   Server   授权登录   Visitor。    
   
  sp_addlinkedsrvlogin   N'LinkSQLSrvr',   false,   N'Joe',   N'Visitor',   N'VisitorPwd'  
   
  对运行   SQL   Server   7.0   版或更早版本的服务器执行分布式查询时,必须升级早期版本上的目录存储过程,以确保分布式查询可以正常运行。例如,如果服务器运行的是   SQL   Server   7.0   版实例,则在可以从运行   SQL   Server   2000   实例的服务器中的分布式查询内引用目录存储过程之前,必须将它升级到   SQL   Server   2000。有关更多信息,请参见升级目录存储过程   (OLE   DB)。  
   
  更新远程   SQL   Server   表时,本地服务器或客户端不接收为该更新而激发的触发器所产生的任何结果集或消息。  
   
  当使用四部分的名称时,一定要指定架构名称。没有在分布式查询中指定架构名称将会禁止   OLE   DB   查找表。当引用本地表时,如果未指定所有者姓名,SQL   Server   将使用默认值。下列   SELECT   语句将产生   7314   号错误,即使链接服务器登录映射为链接服务器上   Northwind   数据库中的用户   dbo。  
   
  sp_addlinkedserver   @server   =   N'LinkServer',  
          @srvproduct   =   N'   ',  
          @provider   =   N'SQLOLEDB',    
          @datasrc   =   N'ServerNetName',    
          @catalog   =   N'Northwind'  
  GO  
  SELECT   *  
  FROM   LinkServer.Northwind..Shippers  
   
  下面的示例定义了链接服务器和远程服务器,它们都访问网络名称为   othersite   的同一台计算机。链接服务器定义使用与远程服务器的网络名称相同的名称;而远程服务器定义则使用其它名称。  
   
  /*   Create   a   linked   server   definition   to   othersite.   */  
  EXEC   sp_addlinkedserver   'othersite',   N'SQL   Server'  
   
  /*   Create   a   remote   server   definition   using   a  
        fictitious   name.   */  
  EXEC   sp_addserver   'RPCothersite'  
   
  /*   Set   the   fictitious   nameto   the   network   name   faraway.   */  
  EXEC   sp_setnetname   'RPCothersite',   'othersite'  
   
  然后,就可以在分布式查询或者远程过程调用中引用这两个名称。  
   
  /*   A   distributed   query   referencing   othersite.   */  
  SELECT   *  
  FROM   othersite.Northwind.dbo.Employees  
  /*   A   remote   procedure   call   to   the   same   server.   */  
  EXEC   RPCothersite.master.dbo.sp_who  
  /*   Distributed   queries   can   be   used   to   execute  
        stored   procedures   on   the   other   server.   */  
  EXEC   othersite.master.dbo.sp_who  
   
  通过链接服务器执行的存储过程和通过远程服务器执行的存储过程之间的登录映射机制不同。  
   
  链接   SQL   Server   中的事务考虑事项  
  用于   SQL   Server   的   Microsoft   OLE   DB   提供程序不支持嵌套事务。因此,对于隐性或显式事务的内部数据修改操作和分布式分区视图上的数据修改操作,应将   XACT_ABORT   设置为   ON。  
   
  在隐性或显式事务或分布式分区视图内部,不支持对同一   SQL   Server   实例的环回连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值