1

我基本上有一個數據庫和一個應用程序,我想要做的是創建第二個數據庫和第二個應用程序,它們大多是獨立運行的。設置它很簡單,但我現在想要的是兩者之間的連接,以便配置工具能夠同時配置兩個設置。舉一個簡單的例子,我們可以假定整個配置只在數據庫的一個表中完成。所以我基本上看到兩種方法:帶約束的Sql服務器複製?

修改配置工具,以便它將寫入兩個而不是隻有一個服務器,或使用複製從一個數據庫獲取配置表到另一個。因爲我不得不深入研究很多我自己寫的舊代碼,所以我希望通過複製來完成這個任務。 由於使用SQL Server 2008R2,我有快照,事務和合並複製可用。快照很糟糕,因爲我希望整個事情都是「實時」的,而不是快照的工作方式。

交易和合並的聲音都相當不錯,我認爲兩者都有可能,但我遇到了一些問題。事務複製殺死訂戶的約束,這是不可接受的。合併複製不會這樣做,但是當我運行第二個數據庫時,我無法應用合併複製,因爲它想要刪除不能由於現有約束而導致的表。

我試圖設置這兩個複製沒有初始化,但根本沒有工作。我想我必須設置一些不同的東西,但我不知道是什麼。

有沒有辦法像我想要的那樣運行它,或者是否有另一種可能的方式讓我完全錯過?

+0

您想在站點之間進行雙向複製嗎?或者你想在其他網站報告?整個數據庫?只能讀一面嗎? – gbn

+0

單向會很好,只有幾張表 – Flo

+0

和我的其餘問題? – gbn

回答

3

我們大規模地使用事務性複製來做更多或更少的事情,這正是您在此描述的內容,從中心點向多個訂戶數據庫分發配置。

雖然您可能不滿意事務複製提供的默認選項,但您對其行爲方式有很大的控制權。

在將文章添加到發佈時設置的架構選項位掩碼允許您控制複製到訂戶的DDL的幾乎所有方面 - 有關完整詳細信息,請參閱sp_addarticle上的文檔。複製GUI可讓您訪問大多數這些設置,但您可能需要使用T-SQL腳本才能獲得您想要的內容。目前我無法訪問數據庫來檢查GUI中是否出現檢查,默認和外鍵約束。

即使默認的事務複製在這種情況下也適用,如果真的可以接受複製是單向的,因爲不需要在只讀數據庫上維護約束,因爲沒有數據被插入。

+0

單向確實可以,但仍然不能忽略約束,因爲一些要複製的表可能會從訂戶的其他表中引用不復制。 0x200似乎是我想要的,但是在它的描述中,它只會在引用的表也被複制時才起作用,但情況並非如此。無論如何感謝您指出配置的可能性。 – Flo

+0

@Flo - 將被複制的唯一約束是在引用其他表的複製表上創建的約束。引用複製表的其他(非複製)表的約束不會被複制。 –

+1

@Flo - 如果您需要將非複製表中的約束添加到訂閱服務器上的複製表中,則可能需要稍微不同的事務複製模型,其中訂閱服務器上的複製表是獨立於複製而創建的,並且不復制DDL發佈者(使用0x0的'schema_option'和'truncate'的'pre_create_cmd') –