SQL Server 2005: внутренняя ошибка обработчика запросов: - PullRequest
0 голосов
/ 06 октября 2009

Я пытаюсь выполнить следующую процедуру в SQL Server 2005. Мне удалось выполнить это на моем сервере разработки, и когда я пытался использовать это на Live Server, я получаю сообщение об ошибке «Внутренняя ошибка обработчика запросов: запрос процессор не может создать план запроса. Для получения дополнительной информации обратитесь в службу поддержки клиентов ". Я использую ту же базу данных и тот же формат. Когда мы искали в Интернете, он показывает некоторые исправления, которые будут использоваться в SQL Server 2005, чтобы избежать этой ошибки, но мой администратор БД подтвердил, что все исправления обновлены на нашем сервере. Кто-нибудь может дать мне некоторую подсказку об этом.

Запрос:

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 голосов
/ 06 октября 2009

В основном вы столкнулись с ошибкой в ​​оптимизаторе запросов, и только другой обходной путь (при условии, что исправление не сработало) - переписать запрос, чтобы избежать ошибки. Вы можете сделать это, например, выполнив подзапросы как объединения. Есть много причин, по которым эта ошибка могла произойти, даже если Microsoft исправила проблему.

...