交易中不再提供锁定类

时间:2017-07-21 04:43:49

标签: sql sql-server tsql

我收到此错误

  

事务中没有更多可用的锁类。错误1220.SQLSTATE 42000.严重级17. MsgState 1.第1行。

当我执行此选择

SELECT me.Id, dbo.getMenuName(me.id)[name]  FROM BSMenus me

这是功能:

CREATE FUNCTION dbo.Getmenuname(@id INTEGER) 
returns VARCHAR(100) AS 
BEGIN 
  DECLARE @res VARCHAR(100) 
  SELECT @res= 
         CASE 
                WHEN Isnull(m.bsmenufatherid,'')='' THEN m.NAME 
                ELSE dbo.Getmenuname(m.bsmenufatherid)+' / '+m.NAME 
         END 
  FROM   bsmenus m 
  WHERE  m.id=@id 
  RETURN @res; 
END
go

1 个答案:

答案 0 :(得分:2)

您已达到SQL Server 2008及更高版本的最大递归级别 32 。您可以使用@@NESTLEVEL变量检查当前的递归级别。您的递归逻辑中存在错误,或者您必须在不递归的情况下重写代码。

见这里: https://docs.microsoft.com/en-us/sql/t-sql/functions/nestlevel-transact-sql