Як визначити, чи містить файл резервної копії CDC?


9

Використовуючи SQL Server 2008 до 2014 року, я знаю, як створити резервну копію та відновити базу даних із увімкненою системою Capture Data Change (CDC), але те, що я шукаю, це спосіб запитувати повний файл резервної копії, щоб визначити, чи містить він дані CDC.

Що було б чудово, як такий спосіб RESTORE FILELISTONLYотримує список файлів із бази даних, але натомість отримує статус CDC, щоб визначити, чи потрібно буде відновити використовувати прапор KEEP_CDC?

Чи є спосіб визначити, чи резервна копія містить дані CDC?

Дякую!

Відповіді:


7

(якщо хтось знайде спосіб - який я не думаю, що існує, я видалю свою відповідь :-))

Чи є спосіб визначити, чи резервна копія містить дані CDC?

Я не думаю, що можна створити резервну копію, чи CDC увімкнено чи ні.

Найбільше ви можете знати, чи була база даних задіяна у реплікації (під кришкою використовується агент зчитування журналів журналів, який сканує журнал транзакцій) чи ні, використовуючи DatabaseBackupLSN в результаті RESTORE HEADERONLYDatabaseBackupLSN, як "початок контрольної точки", що запускається при резервній копії починається. Цей LSN буде співпадати з тим, FirstLSNякщо резервна копія зроблена, коли база даних не працює і не налаштована реплікація.

Я припускаю, що причина, згідно з якою Microsoft не повертається, чи CDC увімкнена, може також бути предметом безпеки. CDC - це технологія на рівні підприємства, яка дозволяє відслідковувати зміни аж до рівня стовпців. Цього вимагають такі правила, як HIPAA, FISMA тощо.

Від Відновлення або Прикріплення бази даних Enabled для захоплення Зміна даних

SQL Server використовує таку логіку, щоб визначити, чи зберігається зміна даних, після відновлення чи додавання бази даних:

  • Якщо база даних буде відновлена ​​на тому ж сервері з тим же ім'ям бази даних, зміна захоплення даних залишається увімкненою.
  • Якщо база даних відновлена ​​на іншому сервері, за замовчуванням збирання даних відключається, а всі пов'язані метадані видаляються.
  • Щоб зберегти захоплення даних про зміни, використовуйте параметр KEEP_CDC під час відновлення бази даних. Для отримання додаткової інформації про цю опцію, див. RESTORE.
  • Якщо база даних відокремлена і приєднана до того ж сервера або іншого сервера, зміна збору даних залишається увімкненою.
  • Якщо база даних приєднана або відновлена ​​за допомогою параметра KEEP_CDC до будь-якого видання, окрім Enterprise, операція заблокована, оскільки для збору даних потрібен SQL Server Enterprise. Відображується повідомлення про помилку 932:

SQL Server не може завантажити базу даних '%. * Ls', оскільки ввімкнено захоплення даних змін. В даний час встановлене видання SQL Server не підтримує захоплення даних про зміни. Або відключіть захоплення змін у базі даних за допомогою підтримуваного видання SQL Server, або оновіть примірник до такого, який підтримує захоплення змін.


Кін - Як завжди, ви рок-зірка DBA. Дякую за деталі. Я думаю, що я прийшов до такого ж висновку, і дійсно шукав когось, щоб перевірити, що немає способу просто перевірити, чи містить резервна копія CDC. Хорошого дня. Дякую!
Стів Штедман

@SteveStedman Дякую за добрі слова. Будь ласка, підкажіть / прийміть відповідь, якщо відповісте на ваше запитання. Це допоможе і майбутнім читачам :-)
Кін Шах

Дякую Стіву за пост і дякую @Kin, сьогодні дізнався щось нове.
SQLBoy

Примітка: CDC тепер доступний у стандартній версії 2016SP1 або вище та стає більш мейнстрімом. Мені б хотілося, щоб параметри CDC у інтерфейсі відновлення для SSMS я запропонував це також підключити: connect.microsoft.com/SQLServer/feedback/details/3144490/…
GilesDMiddleton
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.