Ознаки
Під час виконання запиту, який містить дані великого об'єкта (LOB) для завантаження в змінну Transact-SQL в Microsoft SQL Server 2008, Microsoft SQL Server 2012 або Microsoft SQL Server 2008 R2, відбувається корупція даних. Наприклад, щоб скопіювати XML-дані з стовпця бази даних до змінної XML, виконайте такий запит: Declare @OUTXML as XMLSELECT @OUTXML = DataXml FROM Table_1 WHERE id=1 У цій ситуації оператор Select запускається, коли інші потоки намагатимуться оновити той САМИЙ стовпець XML. Ця поведінка може спричинити пошкодження даних. Крім того, під час виконання будь-яких операцій читання та записування в пошкодженій стовпці XML з'являється одне з таких повідомлень про помилку:
-
Пошкоджено тип даних XML.
-
Сталася неочікувана кінець файлу.
Примітки
-
Ця проблема зазвичай виникає під час роботи з одночасними операціями завантаження.
-
Якщо ви використовуєте агент невізуального журналу, щоб прочитати пошкоджені дані XML з таблиці, яка входить до списку статей публікації для реплікацій, з'являється таке повідомлення про помилку:
Пошкоджено тип даних XML. (Джерело: MSSQLServer, номер помилки: 6611)
Причина
Ця проблема виникає через те, що блокування у стовпці "ЛОБ даних" буде випущено перед копієними даними з стовпця бази даних до змінної типу "ЛОБ". Будь-який одночасний запит може оновлювати однакові дані в ЛОБ, перш ніж процес копіювання завершиться під час копіювання. Тому відбувається корупція даних.
Спосіб вирішення
Відомості про Сукупне оновлення
Сукупне оновлення 7 для SQL Server 2012
Виправлення для цієї проблеми уперше випущено в сукупному оновленні 7. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета SQL Server 2012, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:
2823247 Сукупний пакет оновлень пакета 7 для SQL Server 2012Примітка. Оскільки будує сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2012 Fix Release. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
2692828 Інстальовано версії SQL Server 2012, випущені після випуску SQL Server 2012
Сукупне оновлення 12 для SQL Server 2008 R2 Service Pack 1
Виправлення для цієї проблеми уперше випущено в сукупному оновленні 12. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета для SQL Server 2008 R2 Service Pack 1, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:
2828727 Сукупний пакет оновлень пакета 12 для SQL Server 2008 R2 Service Pack 1Примітка. Оскільки пакет складається з сукупних, кожен новий випуск Fix містить всі поточні виправлення та всі виправлення системи безпеки, які були включені до попередньої версії SQL Server 2008 R2 Service Pack 1 Fix Release. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
2567616 Випущено пакет оновлень 1 для SQL Server 2008 R2, випущеній після випуску SQL Server 2008 R2 Service SP1
Сукупне оновлення 10 для SQL Server 2008 Service Pack 3
Виправлення для цієї проблеми уперше випущено в сукупному оновленні 10. Щоб отримати докладні відомості про отримання цього сукупного пакета оновлень для SQL Server 2008 Service Pack 3, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:
2814783 Сукупний пакет оновлень пакета 10 для SQL Server 2008 Service Pack 3Примітка. Оскільки будує сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення системи безпеки, які були включені до попередньої версії SQL Server 2008 Service Pack 3 Fix Release. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
2629969 Інстальовано пакет оновлення SQL Server 2008, який було випущено після випуску пакета оновлень 3 для SQL Server 2008
Сукупне оновлення 5 для SQL Server 2008 R2 Service Pack 2 (SP2)
Виправлення для цієї проблеми уперше випущено в сукупному оновленні 5. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета для SQL Server 2008 R2 S2008 R2 SP2, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:
2797460 Сукупний пакет оновлень пакета 5 для SQL Server 2008 R2 S2008 R2 SP2Примітка. Оскільки пакет складається з сукупних, кожен новий випуск Fix містить всі поточні виправлення та всі виправлення системи безпеки, які були включені до попередньої версії SQL Server 2008 R2 S2008 R2 SP2. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
2730301 Випущено пакет оновлень 2 для SQL Server 2008 R2, випущеній після випуску SQL Server 2008 R2 Service Pack NO2
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "застосовується до".