ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

SQL Server 跨服务器查询

2021-08-10 15:02:25  阅读:301  来源: 互联网

标签:dbo -- SQL Server SQLOLEDB 库名 表名 服务器


 

 

--查询示例 
select * from openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名'; '密码',数据库名.dbo.表名)

--生成本地表 
select * into 表 from openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名'; '密码 ',数据库名.dbo.表名)

--把本地表导入远程表 
insert openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名'; '密码',数据库名.dbo.表名) 
select *from 本地表

--更新本地表 
update b 
set b.列A=a.列A 
from openrowset( 'SQLOLEDB', 'sql服务器名'; '用户名'; '密码',数据库名.dbo.表名)as a inner join 本地表 b 
on a.column1=b.column1

 

第一种方法:

--单表查询

select * from OPENDATASOURCE('SQLOLEDB','Data Source=远程实列名;User ID=sa;Password=密码').库名.dbo.表名

--多表关联查询

 SELECT  A.*

 FROM    OPENROWSET('SQLOLEDB'

, '远程实列名'

; 'sa'

; '密码',

库名.dbo.表名1) A 

LEFT JOIN OPENROWSET('SQLOLEDB'

, '远程实列名'

; 'sa'

; '密码',

库名.dbo.表名2) B 

ON A.ID = B.ID

WHERE   --条件

 

--先连接远程服务器:

EXEC sp_addlinkedserver '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=远程实列名;UID=用户;PWD=密码;'

exec sp_addlinkedsrvlogin  @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'

GO

--然后我们就可以关联远程服务器中的表进行查询、修改等操作;

select * from 别名.库名.dbo.表名

insert 库名.dbo.表名 select * from 别名.库名.dbo.表名

 

 

解决SQL Server 阻止了对组件Ad Hoc Distributed Queries访问的方法

 两台服务器都设置下

1.开启Ad Hoc Distributed Queries组件,在sql查询编辑器中执行如下语句:

1 2 3 4 exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure

 

 

2.关闭Ad Hoc Distributed Queries组件,在sql查询编辑器中执行如下语句:

1 2 3 4 exec sp_configure 'Ad Hoc Distributed Queries',0 reconfigure exec sp_configure 'show advanced options',0 reconfigure

 

SQL Server Management Studio 登录后修改

 

 

 

 

标签:dbo,--,SQL,Server,SQLOLEDB,库名,表名,服务器
来源: https://www.cnblogs.com/qingjiawen/p/15123800.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有