2009. 3. 26. 09:16
MSSQL
MAXRECURSION 사용
잘못 구성된 재귀 공통 테이블 식이 무한 루프에 진입하는 것을 방지하는 데 MAXRECURSION을 사용할 수 있습니다. 다음 예에서는 의도적으로 무한 루프를 만들고 MAXRECURSION
힌트를 사용하여 재귀 수준을 2로 제한하는 방법을 보여 줍니다.
간혹 .NET 오류가 Sys.WebForms.PageRequestManagerServerErrorException가 뜨는 경우 (재귀 횟수 초가 오류)
위의 옵션으로 재귀 수준을 조정하여 오류를 없앨수 있다.
위의 옵션으로 재귀 수준을 조정하여 오류를 없앨수 있다.
USE AdventureWorks; GO --Creates an infinite loop WITH cte (EmployeeID, ManagerID, Title) as ( SELECT EmployeeID, ManagerID, Title FROM HumanResources.Employee WHERE ManagerID IS NOT NULL UNION ALL SELECT cte.EmployeeID, cte.ManagerID, cte.Title FROM cte JOIN HumanResources.Employee AS e ON cte.ManagerID = e.EmployeeID ) --Uses MAXRECURSION to limit the recursive levels to 2 SELECT EmployeeID, ManagerID, Title FROM cte OPTION (MAXRECURSION 2); GO