SQL Server 2005:内部查询处理器错误:

时间:2009-10-06 06:48:00

标签: sql-server sql-execution-plan

我正在尝试在SQL Server 2005中执行以下过程。我能够在我的开发服务器中执行此操作,当我尝试在Live Server中使用它时,我收到错误“内部查询处理器错误:查询处理器无法生成查询计划。有关更多信息,请联系客户支持服务“。我使用相同的数据库和相同的格式。当我们在网上搜索时,它会显示在sql server 2005中使用的一些修复程序,以避免此错误,但我的DBA已确认所有修补程序都在我们的服务器中更新。任何人都可以给我一些线索。

查询:

create Procedure [dbo].[sample_Select] 
@ID as varchar(40)   
as  
Declare @Execstring as varchar(1000)
set @Execstring =  
'   
Declare @MID as varchar(40) 
Set @MID =  '''+@ID+'''  
select * from (  
select t1.field1, t1.field2 AS field2 , t1.field3  AS field3 , L.field1  AS field1 , L. field2  AS field2  from table1 AS t1   
INNER JOIN MasterTable AS L ON L. field1 = t1. field2    
where t1. field2  LIKE @MID 
) as DataTable 
PIVOT 
( 
Count(field2) 
FOR field3  
IN (' 
Select @Execstring=@Execstring+ L.field2  +',' FROM MasterTable  AS L inner join 
table1 AS t1 ON t1.field1= L.field2   Where t1.field2 LIKE @ID 
set @Execstring = stuff(@Execstring, len(@Execstring), 1, '') 
set @Execstring =@Execstring +')) as pivotTable'   
exec (@Execstring)

1 个答案:

答案 0 :(得分:0)

您基本上遇到了查询优化器中的错误,只有其他解决方法(假设其中的修补程序不起作用)是重写查询以避免错误。您可以通过将子查询作为连接来执行此操作。即使Microsoft修复了此问题,仍有许多原因导致此错误发生。