繁体   English   中英

SQL Server 2014中的嵌套级别限制错误

[英]Nesting level limit error in SQL Server 2014

我们具有以下SQL Server存储过程:

ALTER PROCEDURE [dbo].[up_get_id]
    (@KeyName VARCHAR(30), @ID INTEGER OUTPUT)
AS
BEGIN
    DECLARE @SEQ_NAME VARCHAR(120);
    SET @SEQ_NAME = 'seq_dbk_' + @KeyName;

    DECLARE @SQL NVARCHAR(1000);
    SET @SQL = 'set @ID = next value for ' + @SEQ_NAME;

    EXEC sp_executesql @SQL, N'@ID int out', @ID = @ID output;

    RETURN 0;
END
GO

有时(并非总是如此,可能在高负载下)在调用存储过程之后:

declare @P1 int
exec up_get_id  @KeyName = 'KEY', @ID = @P1 output
select @P1 Result

客户端出现错误:

警告:致命错误217发生在2011年11月21日下午12:54。 记下错误和时间,然后与系统管理员联系。

此外,SQL Server日志中将显示以下消息:

超过最大存储过程,函数,触发器或视图嵌套级别(限制2)。

关于什么是错的任何想法?

服务器版本:

Microsoft SQL Server 2014 - 12.0.4213.0 (X64)   
Jun 9 2015 12:06:16   
Copyright (c) Microsoft Corporation  
Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)

未答复:)

如果COMPATIBILITY_LEVEL 100以下的错误

超过最大存储过程,函数,触发器或视图嵌套级别(限制2)。

110以上

如果已设置ROWCOUNT选项,或者查询包含TOP或OFFSET,则不能使用NEXT VALUE FOR函数。

因此,您将ROWCOUNT设置为<> 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM