如何恢复复制的数据库

pet*_*ter 2 replication sql-server-2008 sql-server identity

我正在使用事务复制来复制我们的实时数据库。这基本上是为了在服务器出现故障的情况下备份我们的数据库。

复制的数据库是只读的,因此我对其进行了备份、恢复和测试。

我立即注意到标识列不起作用。

例如,原始模式是这样的:

CREATE TABLE [dbo].[Inspection](
[InspectionID] [int] IDENTITY(1,1) NOT NULL,
[CarID] [int] NOT NULL,
Run Code Online (Sandbox Code Playgroud)

然后,在复制的副本上,它看起来像这样:

CREATE TABLE [dbo].[Inspection](
[InspectionID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[CarID] [int] NOT NULL,
Run Code Online (Sandbox Code Playgroud)

这意味着标识列已禁用,对吗?

有没有办法解决这个问题并使这个数据库本身成为一个独立的副本?

另外,我注意到没有传播外键。我知道有一些设置,但是既然标识列被禁用(哪些是主键),传播外键是否会成为问题?

Rem*_*anu 5

如果您想要一份用于 HA/DR 的备用数据副本,那么使用日志传送数据库镜像更好。由于这些技术创建了物理数据库副本,因此您可以完全避免您提到的问题。此外,模式更改“复制”要容易得多。

如果您坚持事务复制,请使用备份而不是快照为您的副本做种子。有关分步指南,请参阅如何:从备份初始化事务订阅