复制拓扑中的SQL INSERT INTO与SELECT INTO与BCP的关系(阶段环境)

我想将我的Production DB中的信息添加到我的Stage DB中。 我有一个生产数据库的BAK,可以从舞台上恢复,但是我担心合并复制对此有影响。

让我进一步解释; 我有15个用户在内部testing有时连接的应用程序。 结构是,在每个系统上都有一个本地SQL Express订阅具有Pull订阅的Stage SQL 2005服务器。 Stage服务器充当发布者和分发者。 testing人员已经要求使用“真实”数据。 如果我只是将生产中的BAK从我的Stage实例中还原到复制集,会发生什么情况? 当本地数据库尝试同步时,他们会“失踪”,因为所有的GUIDS已经改变了?

我的想法是以不同的名称将Production DB恢复到Stage Server,然后删除tblPerson的内容,并从Production tblPerson运行INSERT INTO到现在为空的Stage tblPerson。

我想对这两方面的想法和build议。

将从比克的事业恢复世界的尽头

和/或

是我的第二个解决scheme一个可行的select?

我甚至需要做那么多? 我可以删除tblPerson(Stage)的内容,然后从tblPerson(Production)向舞台对应物执行跨数据库SELECT INTO?

我很好奇/担心这会对我现有的订阅产生什么影响。

您不想使用从生产到您的舞台环境的复制,特别是合并复制。

最好的办法是,当你需要在临时数据库中需要数据来备份生产数据库并恢复整个事情时。 如果你尝试了一顿饭,那么你将不得不面对所有与之相关的参考诚信问题。

恢复数据库将会破坏你的复制(至less在我的场景中是这样的,如果有人知道不同请告诉我!

我们做了很多你build议的 – 删除*从myTable和INSERT INTO。 这花了一些时间,但是在我们的场景中,删除表或删除/恢复数据库会破坏复制。

我不知道这是否重要,但我们也暂停了所有用户的复制。

INSERT INTO或BCP可能工作。 正如您所提到的那样,恢复生产数据库将需要在临时实例中重新创build复制。 SELECT INTO不是一个好主意,因为你不能使用现有的表作为INTO子句的目标 – 它必须是一个新表 – 所以你必须删除目标表,这又需要修复你的复制。

另外两个,INSERT绝对是最简单的,我经常使用这个方法。 如果需要速度,请尝试BCP。 批量插入通常比标准的INSERT操作快得多。 根据BOL( http://msdn.microsoft.com/en-us/library/ms151206.aspx ),你必须使用开关强制触发器触发,但它听起来像应该工作正常否则。