Sql-Server
在 SQL Server 2008 中將多個數據庫合併為具有多個架構的單個數據庫
我在一個 SQL Server 2008 實例中有五個小型數據庫。數據庫是相關的(按業務實體而不是按數據),所以我想將它們合併到一個數據庫中,並在該數據庫中為每個數據庫提供自己的模式。
實際上,我希望主數據庫保留
dbo
模式。最初我首先在主數據庫中創建模式,然後在我要移動的第一個數據庫中編寫表以創建結構,然後執行插入/選擇查詢來遷移數據。我對此沒意見,但它很耗時,而且我什至還沒有進入儲存過程。此外,其中一個數據庫依賴於記錄 ID,只需執行插入/選擇就會將它們丟棄。當然,有一種更簡單的方法可以做到這一點。
我不是 DBA,但我很樂意在 SSMS 中處理查詢等。我在開發伺服器上工作,我是唯一更新數據的人,所以如果出現問題,我總是可以從生產伺服器恢復。任何指針將不勝感激。
我找到了一個解決方案,我將把它貼在這裡,以防其他人在未來尋找這個。我不能說這是最好的方法,但它對我有用並且相對無痛。當我第一次問這個問題(一周或兩週前)時,我還將預先披露我在主數據庫中創建了新模式,所以老實說,我不知道這一步是否必要。
我對每個數據庫重複了這個過程。
- 為數據庫創建了一個唯一的模式名稱。
- 對數據庫中的每個表執行以下查詢:
ALTER SCHEMA [new_schema_name] TRANSFER [table_name];
3.CREATE
使用 SSMS為所有視圖、儲存過程、觸發器和函式生成腳本。(幸運的是,我只有很少的這些,所以這很快。)我確實必須將模式名稱附加到所有表引用(例如[dbo].[table_name]
更改為[new_schema_name].[table_name]
但搜尋和替換使這變得快速和容易。 4. 使用 SQL Server 導入和導出嚮導將表從數據庫導出到主數據庫。 5. 執行CREATE
腳本並刪除舊數據庫。