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 跨库查询的主要内容,如果未能解决你的问题,请参考以下文章