Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server 2005:内部查询处理器错误:_Sql Server_Sql Execution Plan - Fatal编程技术网

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

Sql server SQL Server 2005:内部查询处理器错误:,sql-server,sql-execution-plan,Sql Server,Sql Execution Plan,我试图在SQLServer2005中执行以下过程。我能够在我的开发服务器中执行此操作,当我尝试在Live server中使用此操作时,我收到一个错误内部查询处理器错误:查询处理器无法生成查询计划。有关更多信息,请联系客户支持服务。我使用相同的数据库和相同的格式。当我们在网上搜索时,它显示了sql server 2005中为避免此错误而使用的一些修复程序,但我的DBA已确认所有修补程序都已在我们的服务器中更新。有人能给我一些线索吗 查询: create Procedure [dbo].[sampl

我试图在SQLServer2005中执行以下过程。我能够在我的开发服务器中执行此操作,当我尝试在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)

您基本上在查询优化器中遇到了一个bug,假设热修复程序不起作用,唯一的其他解决方法是重写查询以避免错误。例如,可以通过将子查询作为联接来实现。尽管Microsoft修复了此问题,但仍有许多原因导致此错误发生

试着打电话给MS客服。如果是bug,支持案例应该是免费的。您的DBA是否已确认已安装搜索结果中提到的修补程序,或者他是否仅确认数据库处于最高修补程序级别?Microsoft Update是否没有新的修补程序?它可能是一个非官方补丁,尚未发布。您必须与Microsoft支持部门联系才能获取这些信息。可能值得执行Print@Execstring,而不是执行它来检查生产服务器上的输出,并将其与开发服务器匹配,以防万一。两个服务器都提供相同的查询。