应用对象
SQL Server 2008 Developer SQL Server 2008 Express SQL Server 2008 Express with Advanced Services SQL Server 2008 Standard SQL Server 2008 Enterprise SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Express with Advanced Services

Microsoft 将 Microsoft SQL Server 2008 Service Pack 3 (SP3)或 Microsoft SQL Server 2008 R2 修补程序分发为一个可下载文件。 由于修补程序是累积的,因此每个新版本都包含以前的 SQL Server 2008 SP3 或 SQL Server 2008 R2 更新版本附带的所有修补程序和所有安全更新。

症状

请考虑以下情况:

  • 在 SQL Server 2008 或 SQL Server 2008 R2 中创建表的分区。

  • 不要对所有分区启用压缩。

  • 尝试将记录插入新的空分区中。

在这种情况下,会发生访问冲突并在 SQL Server 错误日志中记录以下错误:

<Date> <Time> spid##      ***Stack Dump being sent to C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\LOG\SQLDump0001.txt<Date> <Time> spid##      SqlDumpExceptionHandler: Process 66 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.<Date> <Time> spid##      * BEGIN STACK DUMP:<Date> <Time> spid##      *  Exception Address = 0000000000C37D22 Module(sqlservr+0000000000137D22)<Date> <Time> spid##      *  Exception Code    = c0000005 EXCEPTION_ACCESS_VIOLATION<Date> <Time> spid##      *  Access Violation occurred reading address 0000000000000020 

注意 此问题也会在 Microsoft SQL Server 2008 R2 中发生。

解决方案

累积更新信息

SQL Server 2008 Service Pack 2

此问题的修补程序首次发布于 SQL Server 2008 Service Pack 2 的累积更新8中。有关此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2648096 SQL Server 2008 的累积更新程序包 8 Service Pack 2注意 由于这些版本是累积的,因此每个新的修复版本都包含以前的 SQL Server 2008 修复版本附带的所有修补程序和所有安全修补程序。 Microsoft 建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2402659 发布 SQL Server 2008 Service Pack 2 后发布的 SQL Server 2008 版本 为特定 SQL Server service pack 创建 Microsoft SQL Server 2008 修补程序。 必须将 SQL Server 2008 Service Pack 2 修补程序应用到 SQL Server 2008 Service Pack 2 的安装。 默认情况下,SQL Server service pack 中提供的任何修补程序都包含在下一个 SQL Server service pack 中。

SQL Server 2008 R2

此问题的修补程序首次在累积更新11中发布。有关如何为 SQL Server 2008 R2 获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2633145 SQL Server 2008 R2 的累积更新包11 注意 由于这些版本是累积的,因此每个新的修复版本都包含了以前的 SQL Server 2008 R2 修补程序版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

981356 发布 SQL Server 2008 R2 后发布的 SQL Server 2008 R2 版本

SQL Server 2008 R2 Service Pack 1

此问题的修补程序首次在 SQL Server 2008 R2 Service Pack 1 的累积更新4中发布。有关如何获取此累积更新包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2633146 SQL Server 2008 R2 Service Pack 1 的累积更新程序包4注意 由于这些版本是累积的,因此每个新的修复版本都包含了以前的 SQL Server 2008 R2 修补程序版本附带的所有修补程序和所有安全修补程序。 我们建议你考虑应用包含此修补程序的最新修复版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2567616 在发布 SQL Server 2008 R2 Service Pack 1 之后发布的 SQL Server 2008 R2 版本

SQL Server 2008 Service Pack 3

此问题的修补程序首次发布于 SQL Server 2008 Service Pack 3 累积更新包2。有关如何获取此累积更新包的 SQL Server 2008 Service Pack 3 的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2633143 SQL Server 2008 的累积更新包 2 Service Pack 3注意 由于这些版本是累积的,因此每个新的更新版本都包含以前的 SQL Server 2008 Service Pack 3 更新版本附带的所有修补程序和所有安全更新。 我们建议你考虑应用包含此修补程序的最新更新版本。 有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2629969 发布 SQL server 2008 Service Pack 3 后发布的 SQL Server 2008 版本

更多信息

若要确认你是否遇到了此知识库文章中所述的问题,请按照以下步骤操作:

  1. 打开到 SQL Server 的 DAC 连接,然后运行以下查询:

    Use <your_db_name>select * from sys.sysrscols rsc where rsc.rsid in ( select sau.container_idfrom sys.system_internals_allocation_units sau join sys.partitions pt on sau.container_id = pt.partition_idand pt.object_id = object_id(<YourPartitionedTable>) and pt.index_id = 1) 

    注意 在此查询中,<YourPartitionedTable> 是分区表名称的占位符。

  2. 在查询的输出中,检查 rscolid 列是否包含较大的值。 下面是这样一个较大值的示例:

    rsid

    rscolid

    hbcolid

    rcmodified

    ti

    cid

    ordkey m

    72057594380091392

    0

    1

    614911578

    56

    0

    72057594380091392

    11

    13

    614911578

    12967

    53265

    0

    72057594380091392

    14

    614911578

    32999

    53265

    0

    72057594380091392

    13

    614911578

    32999

    53265

    0

    72057594380091392

    14

    utf-16

    614911578

    59

    0

    0

    72057594380091392

    614911578

    59

    0

    0

    72057594380091392

    18

    614911578

    1834

    0

    0

    72057594380091392

    67108865

    19

    614911578

    19627

    53625

    0

    72057594380091392

    22

    23

    614911578

    56

    0

    0

    72057594380091392

    23

    614911578

    10407

    53625

    0

    72057594380091392

    二十五

    614911578

    662636

    0

    0

在此示例中,67108865的值比其他人大得多。 这表示你遇到了本知识库文章中所述的问题。

若要解决此问题,请重新生成受影响的分区。 请与 Microsoft 支持人员联系,了解涉及哪些分区。 或者,你可以使用以下查询重新生成所有分区:

ALTER INDEX <your_table_index>ON <your_table_name>REBUILD Partition = allGO 

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。