2009-10-06 8 views
0

Je suis en train d'exécuter cette procédure suivante dans SQL Server 2005. J'ai été en mesure d'exécuter cette opération dans mon serveur de développement et lorsque j'ai essayé de l'utiliser dans le serveur Live, j'obtiens Erreur "Erreur interne du processeur de requêtes: le processeur de requêtes n'a pas pu générer un plan de requête.Pour plus d'informations, contactez le service clientèle". J'utilise la même base de données et le même format. quand nous avons cherché sur le web, il montre quelques corrections à utiliser dans sql server 2005 pour éviter cette erreur mais mon DBA a confirmé que tous les correctifs sont mis à jour sur notre serveur. Quelqu'un peut-il me donner un indice à ce sujet?SQL Server 2005: Erreur de processeur de requête interne:

Requête:

create Procedure [dbo].[sample_Select] 
@ID as varchar(40) 
as 
Declare @Execstring as varchar(1000) 
set @Execstring = 
' 
Declare @MID as varchar(40) 
Set @MID = '''[email protected]+''' 
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 @[email protected]+ 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 [email protected] +')) as pivotTable' 
exec (@Execstring) 
+1

Essayez d'appeler le service client MS. S'il s'agit d'un bug, le cas de support devrait être gratuit. – Lucero

+0

Votre administrateur de base de données a-t-il confirmé que les correctifs mentionnés dans vos résultats de recherche sont installés ou at-il seulement confirmé que la base de données est au niveau de correctif le plus élevé (aucun nouveau correctif de Microsoft Update)? Ce pourrait être un correctif non officiel, pas encore publié. Vous devez contacter le support Microsoft pour les obtenir. –

+0

Cela peut valoir la peine de faire une impression @Execstring au lieu de l'exécuter pour vérifier quelle est la sortie sur le serveur de production, et de faire correspondre cela au serveur de développement au cas où. – Andrew

Répondre

0

Vous rencontrez essentiellement un bogue dans optimiseur de requêtes et seule autre solution de contournement (en supposant correctif ther ne fonctionnait pas) est de réécrire la requête pour éviter l'erreur. Vous pouvez le faire en disant par exemple que les sous-requêtes sont des jointures. Plusieurs raisons peuvent expliquer cette erreur, même si Microsoft a résolu le problème.

Questions connexes