Как определить, содержит ли файл резервной копии CDC?

9

Используя SQL Server 2008 до 2014 года, я знаю, как выполнять резервное копирование и восстановление базы данных с включенным изменением сбора данных (CDC), но мне нужен способ запросить полный файл резервной копии, чтобы определить, содержит ли он данные CDC.

Что было бы здорово, если бы такой способ RESTORE FILELISTONLYполучал список файлов из базы данных, а вместо этого получал бы статус CDC, чтобы определить, нужно ли для восстановления использовать флаг KEEP_CDC?

Есть ли способ определить, содержит ли резервная копия данные CDC?

Спасибо!

Стив Стедман
источник

Ответы:

7

(если кто-то найдет способ, который, я думаю, не существует, я удалю свой ответ :-))

Есть ли способ определить, содержит ли резервная копия данные CDC?

Я не думаю, что есть какой-либо способ узнать из резервной копии, включен CDC или нет.

Максимум, что вы можете знать, была ли база данных вовлечена в репликацию (под капотом используется агент чтения журнала, который просматривает журнал транзакций) или нет, используя DatabaseBackupLSN в результате RESTORE HEADERONLYDatabaseBackupLSN, как «начало контрольной точки», которая запускается при резервном копировании начинается. Этот LSN будет совпадать с тем, будет FirstLSNли резервная копия создана, когда база данных простаивает и репликация не настроена.

Я полагаю, что причина, по которой Microsoft не обнаруживает, включен ли CDC или нет, также может быть проблемой безопасности. CDC - это технология уровня предприятия, которая позволяет отслеживать изменения вплоть до уровня столбцов. Это требуется такими правилами, как HIPAA, FISMA и т. Д.

От восстановления или присоединения базы данных, включенной для сбора данных об изменениях

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

  • Если база данных восстанавливается на том же сервере с тем же именем базы данных, сбор данных изменений остается включенным.
  • Если база данных восстанавливается на другом сервере, по умолчанию сбор данных об изменениях отключается и все связанные метаданные удаляются.
  • Чтобы сохранить сбор данных изменений, используйте параметр KEEP_CDC при восстановлении базы данных. Для получения дополнительной информации об этой опции см. RESTORE.
  • Если база данных отключена и подключена к тому же серверу или другому серверу, сбор данных изменений остается включенным.
  • Если база данных подключена или восстановлена ​​с параметром KEEP_CDC к какому-либо изданию, кроме Enterprise, операция блокируется, поскольку для сбора данных изменений требуется SQL Server Enterprise. Сообщение об ошибке 932 отображается:

SQL Server не может загрузить базу данных "%. * Ls", потому что включен сбор данных изменений. Установленная в настоящее время редакция SQL Server не поддерживает сбор данных об изменениях. Либо отключите сбор данных об изменениях в базе данных с помощью поддерживаемого выпуска SQL Server, либо обновите экземпляр до того, который поддерживает сбор данных об изменениях.

Кин Шах
источник
Кин - Как обычно, вы DBA Rockstar. Спасибо за детали. Я думаю, что пришел к тому же выводу и действительно искал кого-то, кто мог бы подтвердить, что нет способа просто проверить, содержит ли резервная копия CDC. Хорошего дня. Спасибо!
Стив Стедман
@SteveStedman Спасибо за добрые слова. Пожалуйста, подтвердите / примите ответ, если на ваш вопрос ответили. Это поможет и будущим читателям :-)
Кин Шах
Спасибо Стиву за пост и спасибо @Kin, узнал что-то новое сегодня.
SQLBoy
Примечание: CDC теперь доступен в стандарте 2016SP1 или выше и становится все более популярным. Я хотел бы, чтобы параметры CDC были в пользовательском интерфейсе восстановления в SSMS, я также предложил это для подключения: connect.microsoft.com/SQLServer/feedback/details/3144490/…
GilesDMiddleton