加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

★SqlServer 中 link serve的使用

发布时间:2020-12-12 15:19:25 所属栏目:MsSql教程 来源:网络整理
导读:原文地址:http://zzh.javaeye.com/blog/278847 ? 问题描述: ????? 日本数据库服务器中有两个数据库A,B ????? 现在要将B数据库迁移到中国, ????? 但是A,B之间有表的关联。 实现结果: ????? A,B之间的数据库实现同时更新。 ? 解决方案: ???? 采用SQLSe

原文地址: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 ? 实例的环回连接。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读