FIX: Повільний продуктивності або глухий кут, коли ви відновити базу даних і виконати заяви в той же Вільний час в SQL Server 2012

Переклади статей Переклади статей
Номер статті: 2725950 - Показ продуктів, яких стосується ця стаття.
Майкрософт поширює Microsoft SQL Server 2012 виправлення як один завантажувати файл. Оскільки Накопичувальне виправлення, кожен новий реліз містить усі виправлення, і всі виправлення безпеки, які входили до складу попередніх SQL Server 2012 виправити реліз.
Розгорнути все | Згорнути все

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

Ознаки

Сценарій 1

Розглянемо таку ситуацію:
  • Відновити базу даних Microsoft SQL Server 2012 року.
  • До завершення Відновити базу даних, інший посилається подання елементів каталогу sys.database_recovery_status і вимагає блокування базі даних. Наприклад, ви виконати наступну заяву Виберіть :

    SELECT * FROM sys.database_recovery_status
У цьому випадку повільного продуктивність відбувається, в якому процес Виберіть оператор дожидается бази даних відновлення завершення.

Сценарій 2

Розглянемо таку ситуацію:
  • Відновити базу даних у SQL Server 2012.
  • До завершення Відновити базу даних, ви виконати наступну заяву:

    IF EXISTS (SELECT * FROM sys.database_recovery_status WHERE database_id= DataBaseID AND database_guid IS NOT NULL)
    Примітка. На DataBaseID представляє Ідентифікатор бази даних, на які ви виконувати операцію Відновити базу даних.
У цій ситуації взаємоблокування відбувається в процесі Відновити базу даних. Це взаємне блокування викликає процес Відновити базу даних на провал.

причина

Два сценарії, що описані в розділі "Ознаки" викликані ж причини.

У розділі "Scenario1" питання виникає тому, що процес Відновити базу даних потрібен монопольний доступ до бази даних. Коли ви виконати оператор, який згадується в цьому розділі, спільні блокування потрібно базі даних. Таким чином, спільні блокування чекає для монопольного доступу, доки монопольне блокування.

У розділі "Сценарії 2" коли ви виконати оператор, який згадується в цьому розділі, спільних блокування необхідна як базі даних, так і на sys.sysdbreg таблиці. В останній фазі процес Відновити базу даних процес вимагає оновлення-замок на sys.sysdbreg таблиці. Однак, спільних блокування не випустили з бази даних. Таким чином, глухий кут відбувається на sys.sysdbreg таблиці і бази даних відновлення процес визначається бути жертвою глухий кут.

Розв'язанн

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

сукупний пакет оновлень пакета 1 SQL Server 2012 з пакетом оновлень 1

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

сукупний пакет оновлень пакета 3 для SQL Server 2012

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

Стан

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

Обхідний шлях

Для тимчасового усунення проблеми в сценарії 2, скористайтеся одним з наступних способів.
Спосіб 1


Змінити оператор уникнути спільних блокування sys.sysdbreg таблиці за допомогою Підказка "NOLOCK".
IF EXISTS (SELECT * FROM sys.database_recovery_status with(NOLOCK) WHERE database_id= DataBaseID AND database_guid IS NOT NULL)
Спосіб 2
Встановити пріоритет глухий кут заявою для "НИЗЬКА".
SET DEADLOCK_PRIORITY LOW
IF EXISTS(SELECT * FROM sys.database_recovery_status where database_id = DataBaseID AND database_guid IS NOT NULL)
Примітка. При використанні другого способу уникнути глухий кут, як у заяві, так і в процесі Відновити базу даних, коди в інструкції IF не виконуватиметься.

Посилання

Докладніше про монопольного доступу, спільний блокування та оновлення блокування перейдіть до наступного веб-сайт MSDN:
Загальні відомості про блокування режими
Докладніше додаткових обслуговування моделі для SQL Server клацніть номер статті в базі знань Microsoft Knowledge Base:
935897 Додаткових обслуговування модель доступна з команди SQL Server, щоб доставити виправлень для повідомляли про проблеми
Для отримання додаткових відомостей про іменування схеми для оновлення SQL Server клацніть номер статті в базі знань Microsoft Knowledge Base:
822499 Іменування схеми для пакетів оновлень програмного забезпечення Microsoft SQL Server
Щоб отримати додаткові відомості про термінологію оновлення програмного забезпечення, клацніть номер статті в базі знань Майкрософт:
824684 Стандартна термінологія, яка використовується для опису оновлень програмних продуктів Майкрософт

Властивості

Номер статті: 2725950 - Востаннє переглянуто: 20 листопада 2012 р. - Редакція: 2.0
Застосовується до:
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Express
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
Ключові слова: 
kbtshoot kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2725950 KbMtuk
Машинний переклад
УВАГА! Цю статтю переклала програма машинного перекладу Microsoft, а не людина. Корпорація Microsoft пропонує вам як машинні переклади, так і переклади фахівців, щоб Ви мали доступ до всіх статей бази знань рідною мовою. Проте стаття, яку переклав комп’ютер, не завжди бездоганна. Вона може містити лексичні, синтаксичні або граматичні помилки. Так само помиляється іноземець, спілкуючись вашою рідною мовою. Корпорація Microsoft не несе відповідальність за жодні неточності, помилки або шкоду, завдану неправильним перекладом змісту або його використанням з боку користувачів. Крім того, корпорація Microsoft часто оновлює програму машинного перекладу.
Клацніть тут, щоб переглянути цю статтю англійською мовою: 2725950

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

 

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