现在需要在一台服务器(A)上的数据库(Master)里访问另外一台服务器(B)的另外两个数据库(NZ 和 AU)。AU 和 NZ 是网站的部分实时数据,目前某一步操作的REPLICATION方案是从服务器B到A,AU / NZ 的表结构同Master 数据结构基本一致。
这样一来,当把AU Replication 到 Master 后,在把 NZ Replication 到 Master , Master 里的就只剩 NZ 的数据了。反过来就只有AU的了,具体的Replication 是怎么一回事,我也不懂,也没有细看。
如果能在Master 里直接操作 AU 和 NZ 就好了。
SQLServer 有函数:
OPENROWSET 和 OPENDATASOURCE
这两个函数不但能实现从另外的数据库读数据,而且还能从EXCEL、TXT, ORACLE, ODBC 等读数据。
–启用Ad Hoc Distributed Queries:
exec sp_configure \\\’show advanced options\\\’,1
reconfigure
exec sp_configure \\\’Ad Hoc Distributed Queries\\\’,1
reconfigure
SELECT *
FROM OPENDATASOURCE(
\\\’SQLOLEDB\\\’,
\\\’Data Source=SQLServerName;User ID=sa;Password=xxx\\\’
).Help.dbo.Help_Category
或
select * from openrowset( \\\’SQLOLEDB \\\’, \\\’SQLServerName\\\’; \\\’sa\\\’; \\\’xxx\\\’, Help.dbo.Help_Category )
–关闭Ad Hoc Distributed Queries:
exec sp_configure \\\’Ad Hoc Distributed Queries\\\’,0
reconfigure
exec sp_configure \\\’show advanced options\\\’,0
reconfigure
但是,这样写着有点复杂,而且不便于维护,假如数据库密码改变了,就需要把一个一个把密码改正。
Oracle 里有 DB Link, 而且语法非常简洁。
查了一下帮助,SQLServer 里有 链接服务器 这个东东。要创建 链接服务器需要用到SQLServer 的一个系统存储过程:
sp_addlinkedserver [ @server= ] \\\’server\\\’ [ , [ @srvproduct= ] \\\’product_name\\\’ ]
[ , [ @provider= ] \\\’provider_name\\\’ ]
[ , [ @datasrc= ] \\\’data_source\\\’ ]
[ , [ @location= ] \\\’location\\\’ ]
[ , [ @provstr= ] \\\’provider_string\\\’ ]
[ , [ @catalog= ] \\\’catalog\\\’ ]
exec sp_addlinkedserver @server= \\\’XLING\\\’ , @srvproduct = \\\’\\\’, @provider = \\\’SQLNCLI\\\’ , @datasrc = \\\’SQLServerName2\\\’
执行后,可以在 Sqlserver Management Studio 的对象资源管理器里的 服务器对象 -》 链接服务器 里看到看这个 XLING
然后就可以用:
SELECT * FROM XLING.PricemeHelp.dbo.Help_Category
这里的XLING就是指向数据库SQLServerName2的链接服务器,从上面的SELECT可以看出,写的依然复杂。
更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码官网:www.west.cn