Sql-Server

SQL Server 從 DPM 填充複製伺服器

  • June 7, 2017

我繼承了一個帶有 4 台機器的舊 SQL Server 數據庫:production_server(2008.r2)、DPM_server(DPM 2007) 和兩個 replication_server1(2008.r2) replication_server2(2012)。SQL Server 必須重新安裝在 replication_server2 上,因此該機器上的所有數據都失去了。

我需要從生產伺服器到此伺服器的事務複製重新聯機,而不需要錘擊生產伺服器來創建初始快照。

是否可以使用我的 DPM 伺服器通過備份或快照提供數據的最新副本?

或者,是否可以讓 replication_server1 提供初始快照,然後在一切就緒後將其指向 production_server 發布?

我無法在文件中找到明確的答案,提前感謝您的時間。

此步驟將實施您的第二個選項。

或者,是否可以讓 replication_server1 提供初始快照,然後在一切就緒後將其指向 production_server 發布?

您將在 repl1 和 repl2 之間正常設置複製。使用與設置 prod–>repl2 伺服器時相同的分發伺服器。

一旦停機時間開始(確認應用伺服器沒有建立任何新的連接/寫入生產發布文章):

  1. 繼續執行分發代理作業,直到 prod–>repl1 和 repl1–>repl2 上的未傳遞命令計數為零。這對於這種方法的工作是絕對關鍵的。
  2. 停止分發代理作業。
  3. 刪除複製(僅限發布者和訂閱者),但保持分發者不變。
  4. 在執行時使用“僅複製支持”重新安裝 prod–>repl2 之間的複制sp_addsubscription在此處查看詳細資訊。
  5. 執行快照作業。它不會重新同步您的表模式+數據,而是創建系統對象(如果有任何缺失)。

僅複製支持 在訂閱伺服器上提供支持更新訂閱的文章自定義儲存過程和触發器的自動生成(如果適用)。假定訂閱伺服器已經擁有已發布表的架構和初始數據。配置對等事務複製拓撲時,請確保拓撲中所有節點的數據相同。有關詳細資訊,請參閱對等事務複製。

不支持對非 SQL Server 發布的訂閱。

您可以使用此查詢在分發數據庫中查找未傳遞的命令。

SELECT ss.srvname AS publisher, 
      [name]     AS Agent, 
      publication, 
      a.publisher_db, 
      subscriber_db, 
      art.article, 
      art.destination_object, 
      art.source_object, 
      undelivcmdsindistdb, 
      delivcmdsindistdb, 
      s.article_id, 
      agent_id, 
      a.publisher_id, 
      subscriber_id 
FROM   distribution.dbo.msdistribution_status AS s WITH (nolock) 
      FULL OUTER JOIN distribution.dbo.msdistribution_agents AS a WITH (nolock) 
                   ON s.agent_id = a.id 
      JOIN master.dbo.sysservers AS ss WITH (nolock) 
        ON a.publisher_id = ss.srvid 
      JOIN distribution.dbo.msarticles AS art WITH (nolock) 
        ON s.article_id = art.article_id 
WHERE  subscriber_db <> 'virtual' 
      AND subscriber_db = 'SubscriberDBName' 
ORDER  BY undelivcmdsindistdb DESC 
COMPUTE sum(undelivcmdsindistdb) 

引用自:https://dba.stackexchange.com/questions/175686