如何判断备份文件是否包含CDC?


9

使用SQL Server 2008到2014年,我知道如何在启用更改数据捕获(CDC)的情况下备份和还原数据库,但是我正在寻找一种查询完整备份文件以确定其是否包含CDC数据的方法。

最好的办法是RESTORE FILELISTONLY从数据库获取文件列表,但获取CDC状态以确定还原是否需要使用KEEP_CDC标志?

有没有办法确定备份是否包含CDC数据?

谢谢!

Answers:


7

(如果有人找到一种方法-我认为不存在,我将删除答案:-))

有没有办法确定备份是否包含CDC数据?

我不认为有任何方法可以从备份中了解CDC是否启用。

您最多可以知道数据库是否参与了复制(在后台使用了会扫描事务日志的日志读取器代理),或者通过在DatabaseBackupLSN的结果中使用DatabaseBackupLSN来避免复制,RESTORE HEADERONLY就像备份时触发的“检查点开始”一样开始。FirstLSN如果在数据库空闲且未配置任何复制时进行了备份,则此LSN将与之一致。

我认为Microsoft不公开是否启用CDC的原因也可能是安全问题。CDC是一种企业级技术,可跟踪一直到列级的更改。HIPAA,FISMA等法规要求这样做。

还原或附加为更改数据捕获启用的数据库

SQL Server使用以下逻辑来确定在还原或附加数据库之后是否仍启用更改数据捕获:

  • 如果将数据库恢复到具有相同数据库名称的同一服务器,则更改数据捕获保持启用状态。
  • 如果将数据库还原到另一台服务器,则默认情况下禁用更改数据捕获,并删除所有相关的元数据。
  • 要保留更改数据捕获,请在还原数据库时使用KEEP_CDC选项。有关此选项的更多信息,请参见RESTORE。
  • 如果数据库已分离并附加到同一服务器或另一台服务器,则更改数据捕获保持启用状态。
  • 如果使用KEEP_CDC选项将数据库附加或还原到Enterprise以外的任何版本,则操作将被阻止,因为更改数据捕获需要SQL Server Enterprise。显示错误消息932:

SQL Server无法加载数据库'%。* ls',因为启用了更改数据捕获。当前安装的SQL Server版本不支持更改数据捕获。通过使用受支持的SQL Server版本禁用数据库中的更改数据捕获,或者将实例升级到支持更改数据捕获的实例。


Kin-与往常一样,您是摇滚明星DBA。感谢您提供详细信息。我想我得出了相同的结论,并且我确实在寻找一个人来验证没有办法只检查备份是否包含CDC。祝你有美好的一天。谢谢!
Steve Stedman

@SteveStedman感谢您的客气话。如果您的问题得到回答,请投票/接受答案。这也将对未来的读者有所帮助:-)
金莎(Kin Shah)

感谢Steve的帖子和@Kin,今天学到了一些新东西。
SQLBoy

注意:CDC现在可以在2016SP1 Standard或更高版本上使用,并且变得更加主流。我想在SSMS的还原UI中使用CDC选项,我也建议在连接时使用此方法:connect.microsoft.com/SQLServer/feedback/details/3144490/…–
GilesDMiddleton
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.