FIX: 一个访问冲突时将记录 SQL Server 错误日志文件中运行使用计划指南 SQL Server 2005 中的查询

文章翻译 文章翻译
文章编号: 928539 - 查看本文应用于的产品
错误 #: 50000452 (SQL 修补程序)
注意
Microsoft 将 Microsoft SQL Server 2005 修补程序分发作为一个可下载的文件。因为该修补程序是累积性的因此每个新版本包含的所有修补程序和所有安全修补程序附带以前 SQL Server 2005 修补都程序版本。
展开全部 | 关闭全部

本文内容

本文介绍以下有关此修补程序版本:
  • 通过此修补程序包修复的问题
  • 安装此修补程序包的先决条件
  • 有关在安装此修补程序包后是否必须重新启动计算机的信息
  • 有关此修补程序包是否替换任何其他修补程序包的信息
  • 有关是否必须进行任何注册表更改的信息
  • 修补程序包中包含的文件

症状

您在运行使用计划指南 SQL Server 2005 中的查询时查询可能会间歇性地失败。此外,SQL Server 错误日志文件中会记录类似于以下内容的访问冲突:
2006-08-23 13:34:10.48 spid438 *** 堆栈转储发送到 H:\MSSQL\LOG\SQLDump0016.txt
2006-08-23 13:34:10.48 spid438 SqlDumpExceptionHandler: 进程 438 生成致命异常 c0000005 EXCEPTION_ACCESS_VIOLATION。SQL Server 正在终止此过程。
2006-08-23 13:34:10.48 spid438 * *******************************************************************************
2006-08-23 13:34:10.48 spid438 *
2006-08-23 13:34:10.48 spid438 * BEGIN 堆栈转储:
2006-08-23 13:34:10.48 spid438 * 08/23/06 13:34:10 spid 438
2006-08-23 13:34:10.48 spid438 *
2006-08-23 13:34:10.48 spid438 *
2006-08-23 13:34:10.48 spid438 * 异常地址 = 00000000034CE1D0 Module(sqlservr+00000000024CE1D0)
2006-08-23 13:34:10.48 spid438 * 异常代码 = c0000005 EXCEPTION_ACCESS_VIOLATION
2006-08-23 13:34:10.48 spid438 * 访问冲突发生读取解决 0000000000000010
如果满足下列条件都为真,就会出现此问题:
  • 该查询使用计划指南。
  • 查询可接受某些参数。
  • 计划指南适用 OPTIMIZE FOR 提示的查询。
  • 在运行查询之前,将重新编译查询。

解决方案

可以从 Microsoft 获得支持的修补程序。但是,此修补程序被用于解决本文所述的此问题。此修补程序仅应用于出现这一特定问题的系统。此修补程序可能会接受进一步的测试。因此,如果此问题没有对您造成严重的影响,我们建议您等待包含此修补程序的下一个软件更新。

是否可供下载此修补程序没有"提供修补程序下载"部分中,在这篇知识库文章的顶部。如果不会显示此部分,请联系 Microsoft 客户服务和支持以获取此修复程序。

注意如果出现其他问题,或者如果需要进行任何故障诊断,则您可能不得不创建单独的服务请求。将正常收取支持费用将应用于其他支持问题和不需要进行此特定的修补程序的问题。有关完整列表的 Microsoft 客户服务和支持的电话号码,或创建一个单独的服务请求,请访问下面的 Microsoft 网站:
http://support.microsoft.com/contactus/?ws=support
注意"提供修补程序下载"窗体所显示的此修复程序是可用的语言。如果您看不到您的语言,则是一个修复程序不能用于该语言。

系统必备组件

您必须在运行 SQL Server 2005 Service Pack 1 (SP1) 应用此修补程序。有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
913089如何获取最新的 service pack,SQL Server 2005 年

重新启动信息

您不必在应用此修补程序后,重新启动计算机。

注册表信息

您不必更改注册表。

修补程序文件信息

此修补程序仅包含那些文件解决本文列出了该问题所必需的。此修补程序可能不包含将产品完全更新到最新版本所必需的所有文件。

此修补程序的英文版具有的文件属性 (或更新的文件属性) 在下表中列出。日期和时间对这些文件列出在协调世界时 (UTC)。当您查看文件信息时,将转换为本地时间。若要 UTC 与本地时间之间的时差使用控制面板中的日期和时间项中的 时区 选项卡。
SQL Server 2005 32年-位版本
收起该表格展开该表格
文件的名称文件版本文件大小日期时间平台
Logread.exe2005.90.2206.0398,1122006 年十一月 17 日11: 16x86
Microsoft.analysisservices.adomdclient.dll9.0.2206.0543,5202006 年十一月 17 日11: 16x86
Microsoft.analysisservices.deploymentengine.dll9.0.2206.0138,0162006 年十一月 17 日11: 16x86
Microsoft.analysisservices.dll9.0.2206.01,215,2642006 年十一月 17 日11: 16x86
Microsoft.sqlserver.mgdsqldumper.dll2005.90.2206.075,5522006 年十一月 17 日11: 16x86
Microsoft.sqlserver.sqlenum.dll9.0.2206.0908,0642006 年十一月 17 日11: 16x86
Msasxpress.dll9.0.2206.022,3042006 年十一月 17 日11: 16x86
Msgprox.dll2005.90.2206.0197,9202006 年十一月 17 日11: 16x86
Msmdlocal.dll9.0.2206.015,614,7522006 年十一月 17 日11: 16x86
Msmdredir.dll9.0.2206.03,990,3042006 年十一月 17 日11: 16x86
Mssqlsystemresource.ldf不适用524,2882006 年十一月 16 日13: 58不适用
Mssqlsystemresource.mdf不适用40,108,0322006 年十一月 16 日13: 58不适用
Replprov.dll2005.90.2206.0547,6162006 年十一月 17 日11: 16x86
Replrec.dll2005.90.2206.0782,1122006 年十一月 17 日11: 16x86
Sqlaccess.dll2005.90.2206.0347,9362006 年十一月 17 日11: 16x86
Sqlagent90.exe2005.90.2206.0318,7522006 年十一月 17 日11: 16x86
Sqlservr.exe2005.90.2206.028,964,6962006 年十一月 17 日11: 16x86
Sysdbupg.sql不适用192,3462006 年八月 21 日14: 01不适用
Xmlsub.dll2005.90.2206.0192,8002006 年十一月 17 日11: 10x86
Xpstar90.dll2005.90.2206.0292,6402006 年十一月 17 日11: 10x86
Xpstar90.rll2005.90.2206.0152,8642006 年十一月 17 日11: 16x86
SQL Server 基于 2005 x x64 版本
收起该表格展开该表格
文件的名称文件版本文件大小日期时间平台
Logread.exe2005.90.2206.0522,5282006 年十一月 17 日02: 02x64
Microsoft.analysisservices.adomdclient.dll9.0.2206.0543,5202006 年十一月 17 日11: 16x86
Microsoft.analysisservices.adomdclient.dll9.0.2206.0543,5202006 年十一月 17 日02: 02x86
Microsoft.analysisservices.deploymentengine.dll9.0.2206.0138,0162006 年十一月 17 日11: 16x86
Microsoft.analysisservices.dll9.0.2206.01,215,2642006 年十一月 17 日11: 16x86
Microsoft.sqlserver.mgdsqldumper.dll2005.90.2206.075,5522006 年十一月 17 日11: 16x86
Microsoft.sqlserver.mgdsqldumper.dll2005.90.2206.091,4242006 年十一月 17 日02: 02x64
Microsoft.sqlserver.sqlenum.dll9.0.2206.0875,2962006 年十一月 17 日02: 02x86
Msasxpress.dll9.0.2206.022,3042006 年十一月 17 日11: 16x86
Msasxpress.dll9.0.2206.027,4242006 年十一月 17 日02: 02x64
Msgprox.dll2005.90.2206.0259,3602006 年十一月 17 日02: 02x64
Msmdlocal.dll9.0.2206.015,614,7522006 年十一月 17 日11: 16x86
Msmdredir.dll9.0.2206.03,990,3042006 年十一月 17 日11: 16x86
Mssqlsystemresource.ldf不适用524,2882006 年十一月 16 日13: 58不适用
Mssqlsystemresource.mdf不适用40,108,0322006 年十一月 16 日13: 58不适用
Replprov.dll2005.90.2206.0745,2482006 年十一月 17 日02: 02x64
Replrec.dll2005.90.2206.01,008,4162006 年十一月 17 日02: 02x64
Sqlaccess.dll2005.90.2206.0355,1042006 年十一月 17 日02: 02x86
Sqlagent90.exe2005.90.2206.0389,9202006 年十一月 17 日02: 02x64
Sqlservr.exe2005.90.2206.039,371,0402006 年十一月 17 日02: 02x64
Sysdbupg.sql不适用192,3462006 年八月 21 日14: 01不适用
Xmlsub.dll2005.90.2206.0317,2162006 年十一月 17 日02: 02x64
Xpstar90.dll2005.90.2206.0540,9602006 年十一月 17 日02: 02x64
Xpstar90.rll2005.90.2206.0153,3762006 年十一月 17 日02: 02x64
SQL Server 2005 Itanium 体系结构版本
收起该表格展开该表格
文件的名称文件版本文件大小日期时间平台
Logread.exe2005.90.2206.01,095,4562006 年十一月 16 日20: 14IA 64
Microsoft.analysisservices.adomdclient.dll9.0.2206.0543,5202006 年十一月 16 日20: 14x86
Microsoft.analysisservices.adomdclient.dll9.0.2206.0543,5202006 年十一月 17 日11: 16x86
Microsoft.analysisservices.deploymentengine.dll9.0.2206.0138,0162006 年十一月 17 日11: 16x86
Microsoft.analysisservices.dll9.0.2206.01,215,2642006 年十一月 17 日11: 16x86
Microsoft.sqlserver.mgdsqldumper.dll2005.90.2206.0163,1042006 年十一月 16 日20: 14IA 64
Microsoft.sqlserver.mgdsqldumper.dll2005.90.2206.075,5522006 年十一月 17 日11: 16x86
Microsoft.sqlserver.sqlenum.dll9.0.2206.0875,2962006 年十一月 16 日20: 14x86
Msasxpress.dll9.0.2206.055,0722006 年十一月 16 日20: 14IA 64
Msasxpress.dll9.0.2206.022,3042006 年十一月 17 日11: 16x86
Msgprox.dll2005.90.2206.0542,4962006 年十一月 16 日20: 14IA 64
Msmdlocal.dll9.0.2206.048,610,0802006 年十一月 16 日20: 14IA 64
Msmdredir.dll9.0.2206.06,244,1282006 年十一月 16 日20: 14IA 64
Mssqlsystemresource.ldf不适用524,2882006 年十一月 16 日13: 58不适用
Mssqlsystemresource.mdf不适用40,108,0322006 年十一月 16 日13: 58不适用
Replprov.dll2005.90.2206.01,617,1842006 年十一月 16 日20: 14IA 64
Replrec.dll2005.90.2206.02,141,4722006 年十一月 16 日20: 14IA 64
Sqlaccess.dll2005.90.2206.0349,4722006 年十一月 16 日20: 14x86
Sqlagent90.exe2005.90.2206.01,141,0242006 年十一月 16 日20: 14IA 64
Sqlservr.exe2005.90.2206.072,259,8722006 年十一月 16 日20: 14IA 64
Sysdbupg.sql不适用192,3462006 年八月 21 日14: 01不适用
Xmlsub.dll2005.90.2206.0590,6242006 年十一月 16 日20: 14IA 64
Xpstar90.dll2005.90.2206.0951,0722006 年十一月 16 日20: 14IA 64
Xpstar90.rll2005.90.2206.0152,3522006 年十一月 16 日20: 14IA 64

替代方法

要变通解决此问题,请尽量避免查询重新编译。若要确定原因,重新编译的使用 $ 308737 的 Microsoft 知识库文章中描述的方法。有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
308737如何找出 SP:Recompile 事件中的重新编译的原因

状态

Microsoft 已经确认这是在"适用于"一节中列出的 Microsoft 产品中的问题。

更多信息

重现此问题的步骤

  1. 打开 SQL Server 管理 Studio。
  2. 连接到 SQL Server 2005 实例。
  3. Create a new query, and then run the following statements.
    use tempdb
    go
    
    create table mytab1 (col1 nvarchar(50), col2 nvarchar(100), col3 int)
    go
    
    create table mytab2 (a int)
    go
    
    insert into mytab1 values ('col1 value', 'col2 value', 1)
    go
    
    insert into mytab2 values (1)
    go
    
    set quoted_identifier off;
    go
    
    sp_create_plan_guide 
    N'myplanguide',
    N'select * from mytab1 join mytab2 on col3 = a where col1 = @p1', 
    N'SQL',
    NULL,
    N'@p1 nvarchar(30)',
    N'OPTION (FAST 40, OPTIMIZE FOR (@p1 = N''col2''))'
    go
    
    select * from sys.plan_guides
    go
    
    sp_executesql N'select * from mytab1 join mytab2 on col3 = a where col1 = @p1', N'@p1 nvarchar(30)', N'col2'
    go
    
    drop table mytab1
    go
    
    create table mytab1 (col1 nvarchar(50), col2 nvarchar(100), col3 int)
    go
    
    sp_executesql N'select * from mytab1 join mytab2 on col3 = a where col1 = @p1', N'@p1 nvarchar(30)', N'col2'
    go
    
    sp_control_plan_guide N'drop all'
    go
    

参考

有关 OPTIMIZE FOR 提示的详细信息,请访问下面的 Microsoft 开发人员网络 (MSDN) 的网站:
http://msdn2.microsoft.com/en-us/library/ms181714.aspx
有关命名 Microsoft SQL Server 更新架构的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
822499Microsoft SQL Server 软件更新程序包的新命名架构
有关软件更新术语的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
824684用于描述 Microsoft 软件更新的标准术语的说明

属性

文章编号: 928539 - 最后修改: 2007年11月20日 - 修订: 1.4
这篇文章中的信息适用于:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
关键字:?
kbmt kbautohotfix kbexpertiseadvanced kbtshoot kbfix kbsql2005engine kbhotfixserver kbqfe kbpubtypekc KB928539 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 928539
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com