【发布时间】:2017-10-03 21:34:14
【问题描述】:
这是我第一次使用缓存。我在我的 webconfig 中将本地缓存设置为 true。当我尝试运行我的登录页面时出现以下错误
发生System.Data.SqlClient.SqlException H结果=0x80131904 消息=超出最大存储过程、函数、触发器或视图嵌套级别(限制 32)。 Source=.Net SqlClient 数据提供者 堆栈跟踪:
它会在以下代码中引发错误
lock (lastlevelLock)
{
DataSet retval = new DataSet();
if (UseLocalCache)
{
retval =Data.DataRepository.Provider.GetDetailsAll(); // this is where the error comes in
if (retval == null)
retval = new DataSet();
}
else
我做错了什么?因为完全相同的代码和数据库在其他机器上运行良好。我确实查看了堆栈流中提到的其他类似错误,但没有任何帮助。
--WITH ENCRYPTION
AS
BEGIN
;WITH cte AS (
SELECT //do selection
FROM Table g WITH(NOLOCK)
)
SELECT //do selection
INTO #cte
FROM cte c
INNER JOIN list.Type gt WITH(NOLOCK) ON c.TypeId = gt.TypeID
INNER JOIN table.crumb br WITH(NOLOCK) ON c.ID = br.ID
ORDER BY Lev
SELECT
// select columns
NULL AS ResultExpected
INTO #TempGame
FROM #cte tg
JOIN list.Type gt WITH(NOLOCK) ON tg.TypeID = gt.TypeID
WHERE tg.ID IN (
SELECT ID FROM table2 WITH(NOLOCK)
WHERE ID = tg.ID
)
SELECT
//select columns
INTO #Temp2
FROM tanbe2 m WITH(NOLOCK)
INNER JOIN table g WITH(NOLOCK) ON m.ID = g.ID
//perform all joins
WHERE m.ID IN (SELECT ID FROM #Temp)
GETDATE() < ISNULL(m.ResultDateTime, m.ResultExpected)
SELECT * FROM #Temp
SELECT * FROM #Temp2
ORDER BY ResultExpected
DROP TABLE #cte
DROP TABLE #Temp
DROP TABLE #Temp2
END
GO
【问题讨论】:
-
可以显示
GetDetailsAll方法内容吗?通常你可以在SELECT语句中添加OPTION (MAXRECURSION 0)来修复它在SQL Server查询中,但我不知道你是如何从C#代码中执行查询的。 -
嗨@TetsuyaYamamoto我添加了GetDetailsAll。但是sql查询太大了所以我不得不减少一点,但这是基本结构
标签: c# caching sqlexception