SQL Server CONFIG语句不能在用户事务中使用



我得到

CONFIG语句不能在用户事务中使用

当运行下面的过程2时。有什么解决方案吗?谢谢

程序#1:

CREATE PROC [dbo].[nz_test1]
as
   EXEC sp_configure 'show advanced option', 1
   RECONFIGURE WITH OVERRIDE
   EXEC sp_configure 'xp_cmdshell', 1
   EXEC sp_configure 'ad hoc distributed queries', 1  
   RECONFIGURE WITH OVERRIDE
select 1

程序#2:

create proc [dbo].[test_nz_tb3]
as
    create table #t (a varchar(2))
    insert into #t
           exec nz_test1

显然(对我来说),如果你被告知不能做你想做的事情,你需要更改代码以避免做不允许做的事情。特别是,你可能需要将配置/重新配置代码从INSERT语句中调用的过程(nz_test1语句)移到另一个存储过程中。单独运行该代码,可能在插入之前运行(这可能取决于您试图通过重新配置实现什么,您没有透露)。

所以,也许是这样的:

CREATE PROCEDURE dbo.my_config
AS
    EXEC sp_configure 'show advanced option', 1;
    RECONFIGURE WITH OVERRIDE;
    EXEC sp_configure 'xp_cmdshell', 1;
    EXEC sp_configure 'ad hoc distributed queries', 1;
    RECONFIGURE WITH OVERRIDE;
GO
CREATE PROCEDURE dbo.nz_test1
AS
    SELECT 1 AS Value;
GO
CREATE PROCEDURE dbo.test_nz_tb3
AS
    EXEC dbo.my_config;
    CREATE TABLE #t (a varchar(10));
    INSERT INTO #t
        EXEC dbo.nz_test1;

确保您也没有在事务中调用test_nz_tb3。否则,您将需要在test_nz_tb3之外调用my_config,很可能是在调用后者的事务之前。

相关内容

最新更新