当前位置: 首页 > 图文教程 > 数据库 > MSSQL > SQL Server教程:读取第三方数据库的数据

MSSQL
将代码页从SQL Server 7.0改变到SQL Server 2000
浅析SQL SERVER一个没有公开的存储过程
使用存储过程时一个错误的解决方法
执行一个安全的SQL Server安装
SQL导出到MYSQL的简单方法
SQL Server 7六种数据移动方法
数据库升迁从sqlserver6.5到sqlserver2000
用SQL 2000创建用户化XML流
解决SQL Server 2000之日志传送功能
保持多台服务器数据的一致性
将ACCESS转化成SQL2000需要注意的几个问题
一次特殊的SQL Server安装奇遇
实现上千万条数据的分页显示
使用用于SQL Server的IIS虚拟目录管理实用工具
SQL Server连接ACCESS数据库的实现
使用SQL Server数据转换服务升迁Access数据库
SQLServer和Access、Excel数据传输简单总结
XML文件导入SQL Server 2000
在视图中使用ORDER BY子句
内嵌或嵌入SQL和存储过程之对比

MSSQL 中的 SQL Server教程:读取第三方数据库的数据


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-30   浏览: 600 ::
收藏到网摘: n/a

现在需要在一台服务器(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可以看出,写的依然复杂。
 
SQLServer 也有,而且语法差不多:
 
CREATE SYNONYM dbo.Help_Category_NZ FOR XLING.PricemeHelp.dbo.Help_Category
执行后,就可以用:
SELECT * FROM Help_Category_NZ
了!