修复: 记录错误消息是当您在 SQL Server 2012年或 2014年执行不可缓存的自动参数化查询

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 3068703
症状
当 SQL Server 运行时不可缓存的自动参数化查询时,该查询可能会产生访问冲突在极少数情况下。调用堆栈包含以下示例片段与 SQL Server 错误日志中记录了访问冲突:

***Stack Dump being sent to C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\LOG\SQLDump0010.txtSqlDumpExceptionHandler: Process #### generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.* ********************************************************************************* BEGIN STACK DUMP:*  date time spid #*** Exception Address = 000007FA0B512E2F Module(sqllang+0000000000E72E2F)* Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION* Access Violation occurred reading address 0000000000000018** Input Buffer ### bytes -* select identifier, registration_date, model, digit, place, failure, address,  * remote_control, phone_number, state, location, updated, mta, * home_id, vod_address, observations  * from equipment with(nolock) * where branch_group = 1 and equipment_type = 2 * and series = 'SERIES_AAA'*  * ******************************************************************************** -------------------------------------------------------------------------------* Short Stack Dump000007FA0B512E2F Module(sqllang+0000000000E72E2F)000007FA0B57D7D2 Module(sqllang+0000000000EDD7D2)000007FA0A74788B Module(sqllang+00000000000A788B)000007FA0A746B5C Module(sqllang+00000000000A6B5C)000007FA0A747034 Module(sqllang+00000000000A7034)000007FA0A746F8C Module(sqllang+00000000000A6F8C)000007FA0A6C9851 Module(sqllang+0000000000029851)000007FA0AB5CF5C Module(sqllang+00000000004BCF5C)000007FA0AB54397 Module(sqllang+00000000004B4397)000007FA09990430 Module(sqldk+0000000000010430)000007FA09990214 Module(sqldk+0000000000010214)000007FA0998FEF7 Module(sqldk+000000000000FEF7)000007FA099AF15F Module(sqldk+000000000002F15F)000007FA099AF1E0 Module(sqldk+000000000002F1E0)000007FA099AE70E Module(sqldk+000000000002E70E)000007FA099AEFB9 Module(sqldk+000000000002EFB9)000007FA17411832 Module(KERNEL32+0000000000001832)000007FA19B1D609 Module(ntdll+000000000005D609)

在此示例中,symptomsare,如下所示:
  • 简单查询的 WHERE 子句中包含一个或多个常量。SQL Server 可能会自动的进行参数化处理这些常量。
  • "读取地址 0000000000000018" 字符串时,出现了访问冲突。(此字符串以在"18"在 64 位系统中,在 32 位系统上的"0 C")。
  • 短的堆栈转储的内容都具有相同或类似深和相对位置的堆栈帧 (不一定是精确匹配)。

    注意:本示例将从 SQL Server 的 64 位实例。它将是不同的但仍可识别 a32-位实例从示例中。

累积更新信息

第一次 SQL Server 以下累积更新中修复此问题。
建议: 设置 SQL Server 的累积更新

SQL Server 的每个新累积更新包含所有修补程序和所有安全修补程序,已包含在以前的累积更新。为 SQL Server,请查阅最新的累积更新:
状态
Microsoft 已经确认这是"适用于"一节中列出的 Microsoft 产品中的问题。
参考
了解有关 术语 Microsoft 用于描述软件更新。

警告:本文已自动翻译

属性

文章 ID:3068703 - 上次审阅时间:09/04/2015 07:51:00 - 修订版本: 3.0

Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web

  • kbqfe kbsurveynew kbfix kbexpertiseinter kbmt KB3068703 KbMtzh
反馈