Sql-Server

在 SQL Server 2008 中將多個數據庫合併為具有多個架構的單個數據庫

  • May 4, 2017

我在一個 SQL Server 2008 實例中有五個小型數據庫。數據庫是相關的(按業務實體而不是按數據),所以我想將它們合併到一個數據庫中,並在該數據庫中為每個數據庫提供自己的模式。

實際上,我希望主數據庫保留dbo模式。最初我首先在主數據庫中創建模式,然後在我要移動的第一個數據庫中編寫表以創建結構,然後執行插入/選擇查詢來遷移數據。我對此沒意見,但它很耗時,而且我什至還沒有進入儲存過程。此外,其中一個數據庫依賴於記錄 ID,只需執行插入/選擇就會將它們丟棄。

當然,有一種更簡單的方法可以做到這一點。

我不是 DBA,但我很樂意在 SSMS 中處理查詢等。我在開發伺服器上工作,我是唯一更新數據的人,所以如果出現問題,我總是可以從生產伺服器恢復。任何指針將不勝感激。

我找到了一個解決方案,我將把它貼在這裡,以防其他人在未來尋找這個。我不能說這是最好的方法,但它對我有用並且相對無痛。當我第一次問這個問題(一周或兩週前)時,我還將預先披露我在主數據庫中創建了新模式,所以老實說,我不知道這一步是否必要。

我對每個數據庫重複了這個過程。

  1. 為數據庫創建了一個唯一的模式名稱。
  2. 對數據庫中的每個表執行以下查詢:

ALTER SCHEMA [new_schema_name] TRANSFER [table_name]; 3. CREATE使用 SSMS為所有視圖、儲存過程、觸發器和函式生成腳本。(幸運的是,我只有很少的這些,所以這很快。)我確實必須將模式名稱附加到所有表引用(例如[dbo].[table_name]更改為[new_schema_name].[table_name]但搜尋和替換使這變得快速和容易。 4. 使用 SQL Server 導入和導出嚮導將表從數據庫導出到主數據庫。 5. 執行CREATE腳本並刪除舊數據庫。

引用自:https://serverfault.com/questions/82512