views:

220

answers:

1

I am trying to execute this following procedure in SQL Server 2005. I was able to execute this in my development server and when i tried to use this in the Live Server I am getting an Error "Internal Query Processor Error: The query processor could not produce a query plan. For more information, contact Customer Support Services". am using the same Database and the same format. when we searched in the web it shows some fixes to be used in sql server 2005 to avoid this error but my DBA has confirmed that all the patches are updated in our server. can anyone give me some clue on this.

Query:

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)
A: 

You are basically encountering a bug in query optimizer and only other workaround (assuming ther hotfix didn't work) is to rewrite the query to avoid the error. You can do this by say making the sub-queries as joins for example. There are many reasons why this error could happen even though Microsoft fixed the issue.

ajdams