(если кто-то найдет способ, который, я думаю, не существует, я удалю свой ответ :-))
Есть ли способ определить, содержит ли резервная копия данные CDC?
Я не думаю, что есть какой-либо способ узнать из резервной копии, включен CDC или нет.
Максимум, что вы можете знать, была ли база данных вовлечена в репликацию (под капотом используется агент чтения журнала, который просматривает журнал транзакций) или нет, используя DatabaseBackupLSN в результате RESTORE HEADERONLY
DatabaseBackupLSN, как «начало контрольной точки», которая запускается при резервном копировании начинается. Этот 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, либо обновите экземпляр до того, который поддерживает сбор данных об изменениях.