【译】SQLSERVER-在SELECT语句中使用存储过程

2023-02-17 00:00:00 查询 语句 分布式 存储过程 即席

我经常在综合数据库性能运行状况检查期间收到一个频率较高的问题:如何在SELECT语句中使用存储过程。当然,有很多方法可以做到这一点,今天,让我们来学习简单的方法。

在SELECT语句中获取存储过程的结果有许多不同的方法,例如创建临时表、创建表变量、使用函数等。但是,我们将在此文提到在SELECT语句中运行存储过程的简单方法。
如下是我们想要使用的存储过程:

可以在OPENROWSET函数的帮助下执行以下SELECT语句并执行该存储过程。

确实是这么简单。当使用OPENROWSET函数执行SELECT语句时,如果收到有关ad hoc queries(即席查询)的错误信息,您可以通过执行以下命令来修复该错误。
如下为原报错信息:
Msg 15281, Level 16, State 1
SQL Server blocked access to STATEMENT ‘OpenRowset/OpenDatasource’ of component ‘Ad Hoc Distributed Queries’ because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of ‘Ad Hoc Distributed Queries’ by using sp_configure. For more information about enabling ‘Ad Hoc Distributed Queries’, search for ‘Ad Hoc Distributed Queries’ in SQL Server Books Online.

对原报错信息的翻译:
消息 15281,级别 16,状态 1
SQL Server 阻止访问组件“即席分布式查询”的语句“OpenRowset/OpenDatasource”,因为此组件作为此服务器安全配置的一部分处于关闭状态。系统管理员可以使用sp_configure启用“即席分布式查询”。有关启用“即席分布式查询”的详细信息,请在SQL Server联机丛书中搜索“即席分布式查询”。

修复此错误信息的脚本如下:

相关概念:
1.OPENROWSET函数:返回行集,SQLServer2019中对此函数的详细介绍可参考这里:https://docs.microsoft.com/en-us/sql/t-sql/functions/openrowset-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15
2. Ad hoc queries,即席查询:用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表,与普通应用查询不同的是,普通应用查询是定制开发,而即席查询是由用户自定义查询条件的。

今天就讲到这里。了解在SELECT语句中使用存储过程是不是很简单呀?如果您希望我创建有关此主题的视频,请在此文章中发表评论,我很乐意这样做。

以下是我近的一些视频,我想知道您对这些视频的反馈是什么。不要忘记订阅SQL在六十秒内系列。我希望您可以在六十秒系列视频中学到您想要的。

  • 性能问题–日期变量上的函数–SQL在六十秒内#192
  • 性能相关:在运算符之间和其他运算符之间–SQL在六十秒内#191
  • 常用的数据库文件-SQL在六十秒内#190
  • 优化WHERE语句中的日期–SQL在六十秒内#189
  • 数据压缩提高性能–SQL在六十秒内#188
  • 获取当前时区–SQL在六十秒内#187
  • 检测内存压力–SQL在六十秒内#186
  • CPU运行–SQL在六十秒内#185
  • 生成SQLServer对象的脚本–SQL在六十秒内 #184
  • 防止未经授权的索引修改–SQL在六十秒内#183
  • 表中曾经存在的大列数–SQL在六十秒内 #182
  • 优化查询成本–SQL在六十秒内 #181

如果您有任何疑问,可以在Twitter上联系我。
参考链接:Pinal Dave( https://blog.sqlauthority.com/)


本文来源https://www.modb.pro/db/400654

相关文章