黑马程序员技术交流社区

标题: 一个sql语句理论上能不能对多个不同SqlServer实例进行查询 [打印本页]

作者: 杨楠    时间: 2012-1-3 17:55
标题: 一个sql语句理论上能不能对多个不同SqlServer实例进行查询
问下大家,同一局域网下有两台sqlserver服务器A和B
有没有什么办法这样写Sql语句:
select Id,Name,Score from A.T_users,B.T_Scores
where ...........
是不是理论上不行,以为根本就不在一个连接中?

作者: 杨楠    时间: 2012-1-3 18:09
目的是要把北京上海广州的服务器里的表组合到一起用一句SQL语句写查询。大家不要告诉我实现这个功能应不应该这样,我觉得应该分三个connection去做。。。偶就是问问,理论上有没有这种可能,有个SB非要我这样弄。。。还跟我说他们那程序员曾经这样做的。。。
作者: lyz1024    时间: 2012-1-3 18:12
你同时只能连接一个数据库,并进行查询,好像不能这们进行查询
作者: 杨楠    时间: 2012-1-3 18:15
我也是这么想的。。。
作者: 郑文    时间: 2012-1-3 19:45
当然可以 博客园有分布式查询的文章 看看吧
作者: 杨楠    时间: 2012-1-3 19:59
谢谢郑文童子

-- Define a linked server on an instance of SQL Server by using @datasrc.
sp_addlinkedserver
    @server = 'LondonPayroll1',
    @srvproduct = ' ',
    @provider = 'SQLNCLI',
    @datasrc = 'London\Payroll'

-- Define a linked server on an instance of SQL Server by using
-- server_name\instance_name in a provider string.
sp_addlinkedserver
    @server = 'LondonPayroll2',
    @srvproduct = ' ',
    @provider = 'SQLNCLI',
    @provstr = 'Server=London\Payroll'

-- Specify an instance of SQL Server in OPENDATASOURCE
-- by using a provider string.
SELECT *
FROM OPENDATASOURCE('SQLNCLI',
    'Data Source=London\Payroll;Integrated Security=SSPI')
    .AdventureWorks2008R2.HumanResources.Employee

-- Specify an instance of SQL Server in OPENROWSET
-- by using a provider string.
SELECT a.*
FROM OPENROWSET(
     'SQLNCLI',
     'Server=London\Payroll;Trusted_Connection=yes',
      AdventureWorks2008R2.HumanResources.Employee) AS a
作者: 杨楠    时间: 2012-1-9 18:10
nickren 发表于 2012-1-9 10:50
两台SQLserver相互查询,像你这样是不可以的,因为是不同的服务器,
但是实现两数据库资料在有相关联的情况 ...

谢谢nickren ~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2