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 組建 Microsoft SQL Server 2008 修復程式是針對特定的 SQL Server service pack 建立的。 您必須將 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 組建
其他相關資訊
若要確認您是否遇到此知識庫文章中所述的問題,請依照下列步驟進行:
-
開啟與 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> 是分區表名稱的預留位置。
-
在查詢的輸出中,檢查 [ rscolid ] 資料行中是否含有較大的值。 以下是這類大型值的範例:
rsid
rscolid
hbcolid
rcmodified
ti
cid
ordkey m
72057594380091392
0
1
614911578
56
0
4
72057594380091392
11
合
614911578
12967
53265
0
72057594380091392
之間
4
614911578
32999
53265
0
72057594380091392
合
工資
614911578
32999
53265
0
72057594380091392
4
位
614911578
59
0
0
72057594380091392
工資
11x17
614911578
59
0
0
72057594380091392
11x17
滿
614911578
1834
0
0
72057594380091392
67108865
合
614911578
19627
53625
0
72057594380091392
22
日
614911578
56
0
0
72057594380091392
日
24
614911578
10407
53625
0
72057594380091392
24
位
614911578
662636
0
0
在這個範例中,67108865的值會比其他人大。 這表示您遇到此知識庫文章中所述的問題。
若要解決此問題,請重建受影響的分區。 若要瞭解涉及哪些分區,請聯絡 Microsoft 支援人員。 或者,您可以使用下列查詢重建所有分區:
ALTER INDEX <your_table_index>ON <your_table_name>REBUILD Partition = allGO
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。