sql server 跨库查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server 跨库查询相关的知识,希望对你有一定的参考价值。

现在有个需求需要用到别的服务器的一些数据,都是sql server数据库,但是在不同的服务器,不同 的数据库,该怎么查询??

  方法一:
  select * from servername.dbo.tablename
  方法二:
  select * from OPENDATASOURCE(
\'SQLOLEDB\',
\'Data Source=远程ip;User ID=sa;Password=密码\'
).库名.dbo.表名
where 条件
  select top 100 * from OPENDATASOURCE(
\'SQLOLEDB\',
\'Data Source=192.168.6.100;User ID=sa;Password=1234\'
).[zhaolx-test].dbo.TGongwen
  where gid <5
  insert into OPENDATASOURCE(
\'SQLOLEDB\',
\'Data Source=192.168.6.100;User ID=sa;Password=1234\'
).[zhaolx-test].dbo.t_aaa (id ,name )values(\'001\',\'Tom\')
  select top 100 * from OPENDATASOURCE(
\'SQLOLEDB\',
\'Data Source=192.168.6.100;User ID=sa;Password=1234\'
).[zhaolx-test].dbo.t_aaa
参考技术A 首先确定建立了链接服务器
(具体创建方式:http://www.jb51.net/article/24810.htm)

然后
select * from [192.1xxxxx(地址名)].库名.dbo.表名
参考技术B EXEC sp_addlinkedserver
@server='192.168.1.118',--被访问的服务器别名(习惯上直接使用目标服务器IP,或取个别名如:JOY)
@srvproduct='',
@provider='SQLOLEDB',
@datasrc='192.168.1.118' --要访问的服务器
--使用sp_addlinkedsrvlogin 来增加用户登录链接

EXEC sp_addlinkedsrvlogin
'192.168.1.118', --被访问的服务器别名(如果上面sp_addlinkedserver中使用别名JOY,则这里也是JOY)
'false',
NULL,
'sa', --帐号
'123456' --密码
go

select *from [192.168.1.118].[数据库名].[dbo].[表名]

SQL 跨库查询

使用SQL查询数据,不仅能查询当前库的数据,还可以跨数据库,甚至跨服务器查询。

下面给大家介绍一下跨服务器查询的步骤(以SQL Server为例):

 

1,建立数据库链接

EXEC sp_addlinkedserver
@server=\'DB_Name\',   --链接服务器别名
@srvproduct=\'\',
@provider=\'SQLOLEDB\',
@datasrc=\'192.168.1.135\'  --要访问的的数据库所在的服务器的ip
GO

    执行成功后,在左侧可以看到一个链接对象

                      

2,创建登录信息(两种方式任选一种)

   2.1 以windows认证的方式登录

EXEC sp_addlinkedsrvlogin 
\'DB_Name\',  --链接服务器别名
\'true\'      --以windows认证的方式登录
GO

  2.2 以SQL认证的方式登录

EXEC sp_addlinkedsrvlogin
\'DB_Name\',               --链接服务器别名
\'false\',                 --以SQL认证的方式登录
 NULL,
\'sa\',                    --要访问的数据库的用户              
\'sasa\'                   --要访问的数据库用户的密码
GO

3,链接服务器查询示例

SELECT * FROM [链接服务器别名].[数据库名].[架构名].[表名]

-- 示例
SELECT * FROM [DB_Name].[ReportServer].[dbo].[tb_Festivals]

 

以上是关于sql server 跨库查询的主要内容,如果未能解决你的问题,请参考以下文章

SQL 跨库查询

sql 跨库查询的问题

SQL SERVER 存储过程中如何使用传入的DB参数,实现跨库查询?

Oracle&SQLServer中实现跨库查询

Oracle数据库怎样跨库查询?

sql跨库查询