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

MSSQL
开源MySQL公司停止提供企业版源代码tar包
细化解析:MySQL+Webmin轻松创建数据库
用mysql做站点时怎样记录未知错误的发生
SQL数据库操作类
如何利用SQL Server数据库快照形成报表
SQL Server中应当怎样得到自动编号字段
SQL Server数据库连接中常见的错误分析
详细讲解SQL Server数据库的文件恢复技术
轻松掌握SQL Server数据库的六个实用技巧
SQL Server数据库涉及到的数据仓库概念
深入了解SQL Server 2008 商业智能平台
剖析SQL Server 事务日志的收缩和截断
如何在不同版本的SQL Server中存储数据
怎样缩小SQL Server数据库的日志文件
SQL Server中两种修改对象所有者的方法
轻松掌握SQL Server存储过程的命名标准
怎样从旧版本SQL Server中重新存储数据
快速掌握如何使用SQL Server来过滤数据
教你快速掌握两个SQL Server的维护技巧
有效地使用 SQL事件探查器的提示和技巧

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-30   浏览: 538 ::
收藏到网摘: 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
了!