Базу даних із попередньої версії SQL Server стає непридатним для сценарій виконання, коли ви додайте його до екземпляра SQL Server 2012

Переклади статей Переклади статей
Номер статті: 2710782 - Показ продуктів, яких стосується ця стаття.
Розгорнути все | Згорнути все

На цій сторінці

ОЗНАКИ

Розглянемо таку ситуацію:
  • Ви встановите екземпляр Microsoft SQL Server 2005, Microsoft SQL Server 2008 або Microsoft SQL Server 2008 R2.
  • Екземпляра SQL Server має ім'я INST1 та розміщено базу даних, яка називається Test_RO_FG_DB.
  • База даних містить такі групи файлів:
    • основний маркер
    • RO_FG
    • RW_FG
  • Filegroup, що називається RO_FG позначений як READ_ONLY.
  • Ви встановити новий екземпляр Microsoft SQL Server 2012. Екземпляра SQL Server 2012 названий INST2.
  • Відключення бази даних Test_RO_FG_DB з INST1.
  • Ви намагаєтеся додати базу даних Test_RO_FG_DB до INST2.
  • З'являється протокол IMAP про помилку, подібне до такого:
    Msg 3415, на рівні держави 2, 16, рядок 1
    Не вдалося оновити базу даних 'Test_RO_FG_DB', тому що це тільки для читання, має файли лише для читання або користувач не має прав на зміну деякі файли. Зробити бази даних або файли, записувані та перезапустіть відновлення.
  • Вільний час спроби повторного підключення бази даних Test_RO_FG_DB до INST1.
У цьому випадку не можна знову додати до бази даних для INST1. І в журнал помилок SQL Server з'являється таке протокол IMAP про помилку:

2012-05-03 22:55:45.37 spid52 запуску бази даних 'Test_RO_FG_DB'.
2012-05-03 22:55:45.78 spid52 * *******************************************************************************
2012-05-03 22:55:45.78 spid52 * розпочати СТОС ДАМП:
2012-05-03 22:55:45.78 spid52 * 12/05/03 22: 55: 45 spid 52
2012-05-03 22:55:45.78 spid52 * розташування: logscan.cpp:1490
2012-05-03 22:55:45.78 spid52 * вираз: FALSE
2012-05-03 22:55:45.78 spid52 * SPID: 52
2012-05-03 22:55:45.78 spid52 * Ідентифікатор процесу: 9156
2012-05-03 22:55:45.78 spid52 * Опис: Неприпустимий ключ значення
2012-05-03 22:55:45.78 spid52 * 98 буфера вводу байт -
2012-05-03 22:55:45.78 spid52 * змінити базу даних Test_RO_FG_DB встановити онлайн
2012-05-03-22:55:51.05 spid52 помилка: 17065, серйозності: 16, держави: 1.
2012-05-03-22:55:51.05 spid52 SQL Server твердження: файл: <logscan.cpp>, рядок «Кому» = 1490 твердження не вдалося = значення 'ПОМИЛКОВІ' неприпустимий ключ. Ця помилка може бути пов'язані з терміни. Якщо помилка не зникне після повторного заяву, використовувати DBCC CHECKDB, щоб перевірити базу даних для структурної цілісності, або перезавантажте сервер, щоб забезпечити структур даних у пам'яті не пошкоджено.
2012-05-03-22:55:51.10 spid52 помилка: 3624, тяжкості: 20, держави: 1.
не вдалося виконати перевірку відповідності у 2012 році-05-03 22:55:51.10 spid52 a системи твердження перевірити. Перевірте журнал помилок SQL Server для деталей. Як правило, відмова підтвердження викликана Підтримка програмного забезпечення помилка або пошкодження даних. Щоб перевірити наявність пошкодження бази даних, розглянути питання про виконання DBCC CHECKDB. Якщо ви погодилися надсилати звалищ до корпорації Майкрософт під Вільний час установки, міні дамп буде надіслано до корпорації Майкрософт. Оновлення може бути Майкрософт в останній пакет оновлень або QFE служби технічної підтримки.
2012-05-03-22:56:09.16 spid52 помилка: 3414, тяжкості: 21, держави: 1.
2012-05-03 22:56:09.16 spid52 помилку сталася під Вільний час відновлення, перешкоджає перезавантажити базу даних 'Test_RO_FG_DB' (база даних ID 19). Діагностики відновлення помилки і виправити їх або відновити з резервної копії відомі добре. Якщо помилки не виправити або очікується, зверніться до служби технічної підтримки.
2012-05-03-22:56:09.18 spid52 помилка: 928, тяжкості: 20, держави: 1.
2012-05-03 22:56:09.18 spid52 під Вільний час оновлення, бази даних, які підняли-винятку 926, тяжкості 14, держава 1, адреса 0000000000F6A971. Винятком номер можна використовувати, щоб визначити причину.</logscan.cpp>


Примітка Ця проблема виникає під Вільний час спроби вкласти базу даних, яка містить filegroup, що позначається READ_ONLY. Ця проблема не виникає під Вільний час переміщення бази даних READ_ONLY, в якому всі дані позначається READ_ONLY.

ПРИЧИНА

Ця проблема виникає тому, що SQL Server 2012 не виявляє filegroup лише для читання, перш ніж він почне оновлення бази даних. Після того, як розпочати оновлення SQL Server 2012 пише запис А бізнес-партнера в журналі транзакцій. Попередні версії не вдається прочитати нових записів журналу транзакцій.

СТАН

Microsoft має підтвердила існування цієї неполадки у продуктах Майкрософт, перелічених у розділі "Застосовується до".

РОЗВ'ЯЗАНН

сукупний пакет оновлень інформації

SQL Server 2012

Виправлення для цієї проблеми була вперше випущена у накопичувальне оновлення 2 SQL Server-2012. Щоб отримати додаткові відомості про цей пакунок сукупний пакет оновлень клацніть номер статті в базі знань Microsoft Knowledge Base:
2703275 сукупний пакет оновлень пакета 2 SQL Server-2012
Примітка Тому, що будує кумулятивний, кожен новий виправити реліз містить усі виправлення, і усі виправлення безпеки, що входили до складу попередній SQL Server 2012 виправити реліз. корпорація Майкрософт рекомендує, що ви вважаєте, що застосування останньому випуску виправити, що містить це виправлення. Щоб отримати додаткові відомості клацніть номер статті в базі знань Microsoft Knowledge Base:
2692828 SQL Server 2012 будує, які були випущені після того, як SQL Server 2012 був випущений
SQL Server 2012 виправлення потрібно застосувати до інсталяції SQL Server-2012.

ОБХІДНИЙ ШЛЯХ

Щоб вирішити цю проблему, використовуйте один із таких методів.

Спосіб 1

Відновити архівувати бази даних з INST1 на INST2.

Примітка Проблему, описану в розділі "Ознаки" не відбувається в SQL Server 2012 під Вільний час відновлення резервної копії з попередньої версії.

Спосіб 2

Виконати оперативне оновлення попередньої версії SQL Server на SQL Server 2012.

Метод 3

Переміщення бази даних, яка містить лише для читання filegroup до екземпляра SQL Server 2012. Для цього виконайте такі інтерактивні елементи.

Примітка Виконувати кроки з 4 по 11 на сервері, який працює SQL Server 2012. Наприклад, виконувати кроки з 4 по 11 на INST2.
  1. На INST1 Відключіть базу даних. Наприклад, відключіть базу даних Test_RO_FG_DB.
  2. Переміщення файлів бази даних на сервері, на якому INST2 інстанції.
  3. Спробуйте додати базу даних до INST2. Нижче зразок коду показує, як це зробити:
    CREATE DATABASE [Test_RO_FG_DB] ON PRIMARY ( NAME = N'Test_RO_FG', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG.mdf' ), 
    FILEGROUP [RO_FG] ( NAME = N'Test_RO_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_File1.ndf' ), 
    FILEGROUP [RW_FG] ( NAME = N'Test_RW_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RW_FG_File1.ndf' )
    LOG ON ( NAME = N'Test_RO_FG_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_log.ldf' )
    FOR ATTACH;
    GO
    Примітка Ви отримаєте 3425 протокол IMAP про помилку, описане в розділі "Ознаки".
  4. У командному рядку перейменувати файли бази даних. Таку команду Зразок показує, як це зробити:
    rename Test_RO_FG.mdf original_Test_RO_FG.mdf
    rename Test_RO_FG_File1.ndf original_Test_RO_FG_File1.ndf
    rename Test_RW_FG_File1.ndf original_Test_RW_FG_File1.ndf
    rename Test_RO_FG_log.ldf original_Test_RO_FG_log.ldf
  5. У SQL Server управління студії створити базу даних, яка має те ж ім'я та фізична структура бази даних, який потрібно вкласти. Нижче зразок коду показує, як це зробити:
    CREATE DATABASE [Test_RO_FG_DB] ON PRIMARY ( NAME = N'Test_RO_FG_DB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_DB.mdf' , SIZE = 4072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), 
    FILEGROUP [RO_FG] ( NAME = N'Test_RO_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_File1.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), 
    FILEGROUP [RW_FG] ( NAME = N'Test_RW_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RW_FG_File1.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
    LOG ON ( NAME = N'Test_RO_FG_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\DATA\Test_RO_FG_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
    GO
  6. Встановити локальна база даних. Для цього виконайте таку команду:
    ALTER DATABASE [Test_RO_FG_DB] SET OFFLINE
    GO
  7. У командному рядку перейменувати файли до нової бази даних. Таку команду Зразок показує, як це зробити:
    rename Test_RO_FG.mdf new_Test_RO_FG.mdf
    rename Test_RO_FG_File1.ndf new_Test_RO_FG_File1.ndf
    rename Test_RW_FG_File1.ndf new_Test_RW_FG_File1.ndf
    rename Test_RO_FG_log.ldf new_Test_RO_FG_log.ldf
  8. У командному рядку перейменування файлів у базі даних, які було переміщено на кроці 2. Перейменування файлів відповідно до бази даних, створеної в кроці 4. Таку команду Зразок показує, як це зробити:
    rename original_Test_RO_FG.mdf Test_RO_FG.mdf 
    rename original_Test_RO_FG_File1.ndf Test_RO_FG_File1.ndf 
    rename original_Test_RW_FG_File1.ndf Test_RW_FG_File1.ndf 
    rename original_Test_RO_FG_log.ldf Test_RO_FG_log.ldf
  9. Установити базу даних ONLINE. Для цього виконайте таку команду:
    ALTER DATABASE [Test_RO_FG_DB] SET ONLINE
    GO
  10. Переконайтеся, що база даних онлайн і відновити службу брокер функціональність.
  11. Видалити файли баз даних, які не потрібні. Таку команду Зразок показує, як це зробити:
    del /P new_Test_RO_FG.mdf
    del /P new_Test_RO_FG_File1.ndf
    del /P new_Test_RW_FG_File1.ndf
    del /P new_Test_RO_FG_log.ldf
Метод 4

Знову додати базу даних, яка містить лише для читання filegroup до попередніх екземпляра SQL Server. Для цього виконайте такі інтерактивні елементи.

коментар до обговорення
  • База даних також містить нових записів журналу транзакцій з збій оновлення.
  • Виконайте кроки 3-10 на сервері, на якому запущено попередню версію SQL Server. Наприклад, виконайте кроки 3-10 на INST1.

  1. Переміщення файлів бази даних до екземпляра SQL Server, що надає хостинг INST1.
  2. Спробуйте додати базу даних до INST1. Нижче зразок коду показує, як це зробити:
    CREATE DATABASE [Test_RO_FG_DB] ON PRIMARY ( NAME = N'Test_RO_FG_DB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_DB.mdf' ), 
    FILEGROUP [RO_FG] ( NAME = N'Test_RO_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_File1.ndf' ), 
    FILEGROUP [RW_FG] ( NAME = N'Test_RW_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RW_FG_File1.ndf' )
    LOG ON ( NAME = N'Test_RO_FG_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_log.ldf' )
    FOR ATTACH
    GO
    Примітка Ви отримаєте 3624 протокол IMAP про помилку, описане в розділі "Ознаки". Ви також отримаєте протокол IMAP про помилку в 1813 році.
  3. У командному рядку перейменування файлів бази даних на INST1. Таку команду Зразок показує, як це зробити:
    rename Test_RO_FG.mdf original_Test_RO_FG.mdf
    rename Test_RO_FG_File1.ndf original_Test_RO_FG_File1.ndf
    rename Test_RW_FG_File1.ndf original_Test_RW_FG_File1.ndf
    rename Test_RO_FG_log.ldf original_Test_RO_FG_log.ldf
  4. У SQL Server управління студії створити базу даних, яка має те ж ім'я та фізична структура бази даних, який потрібно вкласти. Нижче зразок коду показує, як це зробити:
    CREATE DATABASE [Test_RO_FG_DB] ON PRIMARY ( NAME = N'Test_RO_FG_DB', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_DB.mdf' , SIZE = 4072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), 
    FILEGROUP [RO_FG] ( NAME = N'Test_RO_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_File1.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ), 
    FILEGROUP [RW_FG] ( NAME = N'Test_RW_FG_File1', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RW_FG_File1.ndf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
    LOG ON ( NAME = N'Test_RO_FG_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\DATA\Test_RO_FG_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
    GO
  5. Встановити локальна база даних. Для цього виконайте таку команду:
    ALTER DATABASE [Test_RO_FG_DB] SET OFFLINE
    GO
  6. У командному рядку перейменувати файли до нової бази даних. Таку команду Зразок показує, як це зробити:
    rename Test_RO_FG.mdf new_Test_RO_FG.mdf
    rename Test_RO_FG_File1.ndf new_Test_RO_FG_File1.ndf
    rename Test_RW_FG_File1.ndf new_Test_RW_FG_File1.ndf
    rename Test_RO_FG_log.ldf new_Test_RO_FG_log.ldf
  7. У командному рядку перейменування файлів у базі даних, які було переміщено на кроці 2. Перейменування файлів відповідно до бази даних, створеної в кроці 4. Таку команду Зразок показує, як це зробити:
    rename original_Test_RO_FG.mdf Test_RO_FG.mdf 
    rename original_Test_RO_FG_File1.ndf Test_RO_FG_File1.ndf 
    rename original_Test_RW_FG_File1.ndf Test_RW_FG_File1.ndf 
    rename original_Test_RO_FG_log.ldf Test_RO_FG_log.ldf
  8. Встановити базу даних в надзвичайних режим і виконати ремонт. Для цього виконайте таку команду.

    Примітка Під Вільний час цей крок є перебудований журналі транзакцій бази даних. Це може призвести до втрачені дані. Тому ми рекомендуємо зробити архівувати бази даних перед виконанням цього кроку.
    ALTER DATABASE Test_RO_FG_DB SET EMERGENCY
    GO
    ALTER DATABASE Test_RO_FG_DB SET SINGLE_USER
    GO
    DBCC CHECKDB (Test_RO_FG_DB, repair_allow_data_loss) WITH ALL_ERRORMSGS
    GO
    ALTER DATABASE Test_RO_FG_DB SET MULTI_USER
    GO
  9. Переконайтеся, що база даних онлайн і відновити службу брокер функціональність.
  10. Видалити файли баз даних, які не потрібні. Таку команду Зразок показує, як це зробити:
    del /P new_Test_RO_FG.mdf
    del /P new_Test_RO_FG_File1.ndf
    del /P new_Test_RW_FG_File1.ndf
    del /P new_Test_RO_FG_log.ldf

ДОДАТКОВІ ВІДОМОСТІ

Є кілька кроків, які відбуваються, коли базу даних додається до екземпляра SQL Server. Ці кроки включають Відновити базу даних та оновлення файлів із попередніх версій SQL Server.

В проблему, описану в розділі "Ознаки" SQL Server 2012 починається процес оновлення, перш ніж виявлено доступному лише для читання файлів у базі даних. Оновлення кроки включають, починаючи транзакції, щоб очистити "чисто закрили" трохи на сторінці завантаження бази даних. Попередні версії SQL Server не вдається прочитати початок операції запису. Таким чином, база даних не придатні для сценарій виконання в попередніх версіях SQL Server, і SQL Server генерує помилку 3624.

Оновлення на місці, коли базу даних позначений як доступний лише для читання

Коли ви виконання оперативного поновлення екземпляра SQL Server, який містить лише для читання бази даних, що називається Test_RO_DB до SQL Server 2012, може з'явитися протокол IMAP про помилки, які нагадують такі журнал помилок SQL Server:

2012-05-04 21:03:59.23 spid19s запуску бази даних 'Test_RO_DB'.
2012-05-04 21:03:59.56 spid19s перетворення бази 'Test_RO_DB' з версії 661 до поточної версії 706.
2012-05-04 21:03:59.56 spid19s помилка: 928, тяжкості: 20, держави: 1.
2012-05-04 21:03:59.56 spid19s під Вільний час оновлення, бази даних підняли виняток 3415, тяжкості 16, держава 1, адресу 000007FEE66D784A. Винятком номер можна використовувати, щоб визначити причину.
2012-05-04 21:03:59.61 spid19s помилка: 3415, серйозності: 16, держави: 1.
2012-05-04 21:03:59.61 spid19s не вдалося оновити базу даних 'Test_RO_DB', тому що це тільки для читання, має файли лише для читання або користувач не має прав на зміну деякі файли. Зробити бази даних або файли, записувані та перезапустіть відновлення.


Наприкінці процесу оновлення Test_RO_DB бази даних будуть в RECOVERY_PENDING стані. Ви повинні використовувати команду ALTER DATABASE встановити базу даних READ_WRITE. Установити базу даних READ_ONLY за допомогою команди Змінити базу даних . Це дозволяє SQL Server двигун оновлення бази даних в правильній версії.

Оперативне оновлення, якщо базу даних читання/запис містить файл груп, які позначені як лише для читання

Під Вільний час виконання оперативного оновлення до SQL Server 2012, може з'явитися протокол IMAP, які нагадують такі журнал помилок SQL Server. Проблема виникає, якщо попередній екземпляр SQL Server хостів читання/запису бази даних і містить файл груп, які позначені READ_ONLY. Однак, процес оновлення завершено належним чином, і база даних починається онлайн.

Примітка Таке протокол IMAP про помилку, у базі даних називається Test_RO_FG:

2012-05-04 21:03:59.23 spid18s запуску бази даних 'Test_RO_FG'.
2012-05-04 21:03:59.71 spid18s перетворення бази 'Test_RO_FG' з версії 661 до поточної версії 706.
2012-05-04 21:03:59.71 spid18s бази даних 'Test_RO_FG' працює крок оновлення з версії 661 версії 668.



Властивості

Номер статті: 2710782 - Востаннє переглянуто: 18 червня 2012 р. - Редакція: 1.0
ЗАСТОСОВУЄТЬСЯ ДО:
  • Microsoft SQL Server 2012 Enterprise
Ключові слова: 
kbsurveynew kbprb kbtshoot kbmt KB2710782 KbMtuk
Машинний переклад
УВАГА! Цю статтю переклала програма машинного перекладу Microsoft, а не людина. Корпорація Microsoft пропонує вам як машинні переклади, так і переклади фахівців, щоб Ви мали доступ до всіх статей бази знань рідною мовою. Проте стаття, яку переклав комп’ютер, не завжди бездоганна. Вона може містити лексичні, синтаксичні або граматичні помилки. Так само помиляється іноземець, спілкуючись вашою рідною мовою. Корпорація Microsoft не несе відповідальність за жодні неточності, помилки або шкоду, завдану неправильним перекладом змісту або його використанням з боку користувачів. Крім того, корпорація Microsoft часто оновлює програму машинного перекладу.
Клацніть тут, щоб переглянути цю статтю англійською мовою: 2710782

Надіслати відгук

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com