分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
原文地址: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 实例的环回连接。