我得到了
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
答案 0 :(得分:2)
显然(对我来说,无论如何),如果你被告知你不能做你想做的事情,你需要改变你的代码,以避免做你不允许的事情。特别是,您可能需要将配置/重新配置代码移动到您在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
。否则,您需要在my_config
之外调用test_nz_tb3
,可能在调用后者的事务之前调用。{/ p>