简体   繁体   English

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

[英]Nesting level limit error in SQL Server 2014

We have the following SQL Server stored procedure: 我们具有以下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

Sometimes (not always, probably under high loading) after calling the stored procedure: 有时(并非总是如此,可能在高负载下)在调用存储过程之后:

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

the client is getting an error: 客户端出现错误:

Warning: Fatal error 217 occurred at Nov 21 20117 12:54PM. 警告:致命错误217发生在2011年11月21日下午12:54。 Note the error and time, and contact your system administrator. 记下错误和时间,然后与系统管理员联系。

Also, the following message appears in SQL Server log: 此外,SQL Server日志中将显示以下消息:

Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 2). 超过最大存储过程,函数,触发器或视图嵌套级别(限制2)。

Any ideas of what is wrong? 关于什么是错的任何想法?

Server version: 服务器版本:

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)

Аnd unanswered response :) 未答复:)

If COMPATIBILITY_LEVEL 100 and less error 如果COMPATIBILITY_LEVEL 100以下的错误

Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 2). 超过最大存储过程,函数,触发器或视图嵌套级别(限制2)。

110 and more 110以上

NEXT VALUE FOR function cannot be used if ROWCOUNT option has been set, or the query contains TOP or OFFSET. 如果已设置ROWCOUNT选项,或者查询包含TOP或OFFSET,则不能使用NEXT VALUE FOR函数。

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

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

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