【问题标题】:How to use sp_configure in another Stored Procedure?如何在另一个存储过程中使用 sp_configure?
【发布时间】:2010-10-21 13:56:03
【问题描述】:

我正在尝试在另一个存储过程中使用 Sp_configure Proc,但出现错误。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE Test01
AS
BEGIN
    SET NOCOUNT ON;

    sp_configure 'show advanced options', 1
    RECONFIGURE
    GO
    sp_configure 'Ad Hoc Distributed Queries', 1
    RECONFIGURE
    Go
END
GO

错误来了:-

消息 102,级别 15,状态 1,程序 Test01,第 6 行 “sp_configure”附近的语法不正确。 配置选项“Ad Hoc Distributed Queries”从 1 更改为 1。运行 RECONFIGURE 语句进行安装。 消息 102,第 15 级,状态 1,第 1 行 'END' 附近的语法不正确。

【问题讨论】:

  • 我很难找到一个很好的理由,为什么存储过程需要重新配置它正在处理的服务器 - 这些设置会影响整个服务器。
  • @Damien:我不知道是不是 BP。但是我正在启用 Adhoc 分布式查询...然后使用 OpenRowSet 函数并再次禁用 Adhoc 分布式查询...您在这里有什么建议?
  • 这里的问题是,当您的 OPENROWSET 函数工作时,任何其他查询也可以发出即席分布式查询。因此,您不妨一直启用它。

标签: sql-server sql-server-2005


【解决方案1】:

GO 不是 TSQL 命令。它是查询窗口中的批处理分隔符。 RECONFIGURE 之后的第一个 GO 有效地结束了存储过程的定义。调用过程时还需要使用 EXEC。请参阅下面的代码。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE Test01
AS
BEGIN
    SET NOCOUNT ON;

    EXEC sp_configure 'show advanced options', 1
    RECONFIGURE

    EXEC sp_configure 'Ad Hoc Distributed Queries', 1
    RECONFIGURE

END
GO

【讨论】:

  • 好的。那么我应该如何编写它才能运行它呢?
  • @Crawling:删除 GO 语句。还将 EXEC 添加为@Damien 提到的。请参阅我编辑的答案中的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-14
  • 1970-01-01
  • 2014-06-05
  • 1970-01-01
  • 2011-05-08
  • 1970-01-01
相关资源
最近更新 更多