关于非活动订阅数据丢失的问题 - SQL Server 2008
Questions about data loss with inactive subscription - SQL Server 2008
我有数据库A和B,A发布一些表给B,订阅B报错:
... has been marked as inactive and must be reinitiated... error 21704
这些数据库中有非常敏感的数据,我正试图找出一种方法来防止数据丢失,或者至少将其最小化。
我可以对比出现这个错误的数据库吗,还是需要先取消订阅?
我以前从未这样做过,除了“你完蛋了,删除并重新做”之外找不到任何其他解决方案。
这对数据的影响有多大?这个错误已经持续了几个星期了。
以防以后有人有这些疑虑,我把我的经验贴出来。
- 可以,可以比对数据库,不需要先取消订阅。
- "You're screwed" 部分并没有那么糟糕。由于数据库 A 仍然保留原始信息,因此 B 缺少更改。当你比较和同步它们时,你转移了过时的信息。
- 这个错误根本没有造成任何数据问题,问题可能发生在你比较和更新数据库时,因为如果你用B更新A,而B仍然是过时的,你可能会丢失数据。 小心点.
可以在 VisualStudio 上使用 SQL 服务器数据工具进行比较,后者会自动执行任务,或者通过简单的 SQL 查询手动进行。
我通过手工学习,对制作过程有了更深的了解。这是我使用的代码:
--RUN THIS QUERY FROM THE DESTINATION DB
INSERT INTO TABLE_B
SELECT * FROM OPENQUERY([ORIGINAL-SERVER],'SELECT * FROM DB-A.DBO.TABLE_A')
WHERE FOREIGN_KEY NOT IN (SELECT FOREIGN_KEY FROM DB-B.DBO.TABLE_B)
希望这对以后的人有所帮助。
我有数据库A和B,A发布一些表给B,订阅B报错:
... has been marked as inactive and must be reinitiated... error 21704
这些数据库中有非常敏感的数据,我正试图找出一种方法来防止数据丢失,或者至少将其最小化。
我可以对比出现这个错误的数据库吗,还是需要先取消订阅?
我以前从未这样做过,除了“你完蛋了,删除并重新做”之外找不到任何其他解决方案。
这对数据的影响有多大?这个错误已经持续了几个星期了。
以防以后有人有这些疑虑,我把我的经验贴出来。
- 可以,可以比对数据库,不需要先取消订阅。
- "You're screwed" 部分并没有那么糟糕。由于数据库 A 仍然保留原始信息,因此 B 缺少更改。当你比较和同步它们时,你转移了过时的信息。
- 这个错误根本没有造成任何数据问题,问题可能发生在你比较和更新数据库时,因为如果你用B更新A,而B仍然是过时的,你可能会丢失数据。 小心点.
可以在 VisualStudio 上使用 SQL 服务器数据工具进行比较,后者会自动执行任务,或者通过简单的 SQL 查询手动进行。
我通过手工学习,对制作过程有了更深的了解。这是我使用的代码:
--RUN THIS QUERY FROM THE DESTINATION DB
INSERT INTO TABLE_B
SELECT * FROM OPENQUERY([ORIGINAL-SERVER],'SELECT * FROM DB-A.DBO.TABLE_A')
WHERE FOREIGN_KEY NOT IN (SELECT FOREIGN_KEY FROM DB-B.DBO.TABLE_B)
希望这对以后的人有所帮助。