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

MSSQL
ACCESS改为SQL需要注意哪几个地方
把sql数据和access数据整合成一个数据集
SQL中Print语句的烦恼
关于SQL server中字段值为null的查询
得出SQL语句的执行时间的方法
如何在SqlServer与oracel中进行分页的讨论!
分页SQLServer存储过程
怎么清除sql server日志
Sql数据库MDF数据文件数据库恢复
SQL Server存储图像数据的策略与方法
sql server关于函数中如何使用Getdate()
将使用Access的论坛迁移到SqLServer中
ACCESS:跨数据库查询的SQL语句
SQLSERVER扩展存储过程XP_CMDSHELL的简单应用
在SQL Server中快速删除重复记录
调整SQLServer2000运行中数据库结构
SQL Server中查询时显示行号的方法
从数据库中随机抽N条记录
确保所有的非空(Non-NULL)值都是唯一的
使用视图控制用户对数据访问

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


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