Корпорація Майкрософт поширює 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 із пакетом оновлень 2
Виправлення для цієї проблеми уперше випущено в сукупному оновленні 8 для SQL Server 2008 Service Pack 2. Щоб отримати докладні відомості про цей пакет накопичувальне оновлення, клацніть номер статті в базі знань Microsoft Knowledge Base:
2648096 Сукупний пакет оновлень пакета 8 для SQL Server 2008 Service Pack 2Примітка. Оскільки будує сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2008 Fix Release. Корпорація Майкрософт рекомендує застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
2402659 Інстальовано пакет оновлення SQL Server 2008, який було випущено після випуску служби SQL Server 2008 Service Pack 2 Поточні виправлення Microsoft SQL Server 2008 створюються для певних пакетів оновлень для сервера SQL Server. Щоб інсталювати пакет оновлень 2 для SQL Server 2008, потрібно додати пакет оновлень 2 для SQL Server 2008. За замовчуванням будь-яке термінове виправлення, яке надається в пакеті оновлень SQL Server, включено до наступного пакета оновлень служби SQL Server.
SQL Server 2008 R2
Виправлення для цієї проблеми уперше випущено в сукупному оновленні 11. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета для SQL Server 2008 R2, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:
2633145 Сукупний пакет оновлень пакета 11 для SQL Server 2008 R2 Примітка. Оскільки будує сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2008 R2 Fix Release. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
981356 Випущено SQL Server 2008 R2, випущеній після випуску SQL Server 2008 R2
SQL Server 2008 R2 Service Pack 1
Виправлення для цієї проблеми уперше випущено в сукупному оновленні 4 для SQL Server 2008 R2 Service Pack 1. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:
2633146 Сукупний пакет оновлень пакета 4 для SQL Server 2008 R2 Service Pack 1Примітка. Оскільки будує сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2008 R2 Fix Release. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
2567616 Випущено пакет оновлень 1 для SQL Server 2008 R2, випущеній після випуску SQL Server 2008 R2 Service SP1
SQL Server 2008 із пакетом оновлень 3
Виправлення для цієї проблеми уперше випущено в пакеті накопичувальне оновлення пакета 2 для SQL Server 2008 Service Pack 3. Щоб отримати докладні відомості про отримання цього сукупного пакета оновлень для SQL Server 2008 Service Pack 3, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:
2633143 Сукупний пакет оновлень пакета 2 для SQL Server 2008 Service Pack 3Примітка. Оскільки пакет містить сукупну версію, у кожному новому випуску оновлення містяться всі поточні виправлення та всі оновлення системи безпеки, які були включені до попередньої версії оновлення пакета оновлень 3 для SQL Server 2008. Радимо, що ви розгляньте застосування найновішої версії оновлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
2629969 Інстальовано пакет оновлення SQL Server 2008, який було випущено після випуску пакета оновлень 3 для SQL Server 2008
Додаткові відомості
Щоб підтвердити, чи виникає проблема, описана в цій статті бази знань, виконайте наведені нижче дії.
-
Відкрийте підключення КСР до сервера SQL Server і виконайте такий запит:
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"
rcзмінений
TI
CID
м. ордкі
72057594380091392
0
1
614911578
56
0
4
72057594380091392
11
13
614911578
12967
53265
0
72057594380091392
12
14
614911578
32999
53265
0
72057594380091392
13
15
614911578
32999
53265
0
72057594380091392
14
16
614911578
59
0
0
72057594380091392
15
17
614911578
59
0
0
72057594380091392
17
18
614911578
1834
0
0
72057594380091392
67108865
19
614911578
19627
53625
0
72057594380091392
22
23
614911578
56
0
0
72057594380091392
23
24
614911578
10407
53625
0
72057594380091392
24
25
614911578
662636
0
0
У цьому прикладі значення 67108865 значно більше, ніж інші. Це означає, що ви зіткнулися з проблемою, описаною в цій статті бази знань.
Щоб вирішити цю проблему, перебудуйте порушені розділи. Зверніться до служби підтримки Microsoft, щоб дізнатися, які розділи беруть участь. Або можна перебудувати всі розділи за допомогою такого запиту:
ALTER INDEX <your_table_index>ON <your_table_name>REBUILD Partition = allGO
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "застосовується до".