如何使用OPENQUERY访问另一个SQL Server

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 原文:如何使用OPENQUERY访问另一个SQL Server在项目中,经常会遇到一个数据库访问另一个数据库,【CNVFERPDB】为服务器名,【CE3】为库名 1 SELECT Dtl.* 2 FROM CNVFERPDB.
原文: 如何使用OPENQUERY访问另一个SQL Server

在项目中,经常会遇到一个数据库访问另一个数据库,【CNVFERPDB】为服务器名,【CE3】为库名

1 SELECT Dtl.* 
2 FROM CNVFERPDB. CE3.ce3.ZTLE0125 Dtl 
3 INNER JOIN CNVFERPDB.CE3.ce3.ZTLE0124 Mst 
4 ON Dtl.RECVSUPPNO = Mst.RECVSUPPNO AND Dtl.MANDT = Mst.MANDT 
5 WHERE Mst.MANDT = '100' and Dtl.BRANDCODE='MD'

上面的方式是通过服务器名和库名直接访问,这样有多次连接另一个服务器,执行速度会很慢

可以换做下面的形式,执行速度将得到提升:

 1 SELECT *  
 2 FROM OPENQUERY (CNVFERPDB  
 3     , 
 4     ' 
 5     SELECT Dtl.*  
 6     FROM    CE3.ce3.ZTLE0125 Dtl  
 7     INNER JOIN CE3.ce3.ZTLE0124 Mst  
 8     ON Dtl.RECVSUPPNO = Mst.RECVSUPPNO  AND Dtl.MANDT = Mst.MANDT  
 9     WHERE Mst.MANDT = ''100'' and Dtl.BRANDCODE=''MD''
10     '  
11 ) 

OPENQUERY ( linked_server ,'query' )
使用注意事项:
  linked_server 
    表示链接服务器名称的标识符。
  'query'

    在链接服务器中执行的查询字符串。 该字符串的最大长度为 8 KB。


补充
 1 declare @Day VARCHAR(10)=CONVERT(CHAR(8),DATEADD(DAY,-1,GETDATE()),112)
 2 
 3 --set @Day='20140605'
 4 
 5 IF EXISTS(select * from AppLog where Dates=@Day)
 6 return
 7 
 8 declare @sql VARCHAR(2000)='select * 
 9 INTO #temp
10 from openquery
11 ([CNSASPLOGDB01],
12 ''
13 select 
14 A.ProgramId
15 ,'''''+@Day+''''' AS Dates
16 ,COUNT(Duration) as Count
17 ,SUM(CAST(Duration AS DECIMAL(12,3)))/1000 AS SumTime
18 ,AVG(CAST(Duration AS DECIMAL(12,3)))/1000 as AvgTime
19 ,MAX(CAST(Duration AS DECIMAL(12,3)))/1000 as MaxTime
20 from 
21 (
22 select * from LogCSLK01.dbo.AppLog_'+@Day+' with(nolock)
23 union
24 select * from LogCSLK02.dbo.AppLog_'+@Day+' with(nolock)
25 union
26 select * from LogCSLK03.dbo.AppLog_'+@Day+' with(nolock)
27 ) A
28 group by A.ProgramId
29 ''
30 )
31 
32 insert into AppLog
33 select * 
34 from #temp
35 
36 drop table  #temp
37 '
38 --print @sql
39 
40 exec(@sql)

 

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
14天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
44 11
|
3月前
|
SQL 关系型数据库 BI
使用 Webshell 访问 SQL Server 主机并利用 SSRS
使用 Webshell 访问 SQL Server 主机并利用 SSRS
|
4月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
6月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
6月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
76 6
|
5月前
|
网络协议 NoSQL 网络安全
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
【Azure 应用服务】由Web App“无法连接数据库”而逐步分析到解析内网地址的办法(SQL和Redis开启private endpoint,只能通过内网访问,无法从公网访问的情况下)
|
5月前
|
SQL 机器学习/深度学习 开发工具
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
【机器学习 Azure Machine Learning】Azure Machine Learning 访问SQL Server 无法写入问题 (使用微软Python AML Core SDK)
|
5月前
|
SQL 数据库 Windows
【应用服务 App Service】当使用EntityFrameWorkCore访问Sql Server数据库时,在Azure App Service会出现Cannot create a DbSet for ** because this type is not included in the model for the context的错误
【应用服务 App Service】当使用EntityFrameWorkCore访问Sql Server数据库时,在Azure App Service会出现Cannot create a DbSet for ** because this type is not included in the model for the context的错误
|
5月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
549 0
|
4月前
|
SQL 数据库
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例
SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。
116 12
数据库数据恢复—SQL Server数据库报错“错误823”的数据恢复案例