2012-12-06 171 views
3

我有一些數據表在Schema1,我想複製這些表與數據,以我創建一個新的模式,Schema2將數據從一個模式複製到另一個模式?

有沒有一個這樣做的優雅方式?我正在使用SQL Server Management Studio。

+0

你是什麼意思''我創建的新模式「?'你想整個數據庫複製或幾張表? – Kaf

+0

備份和恢復是通常的方法AFAIK –

+0

@Kaf幾張表...... – mezamorphic

回答

6

在SQL Management Studio中,右鍵單擊具有源表的數據庫,選擇任務 - >導出數據。

您將能夠設置源服務器和目標服務器和模式,選擇要複製的表,並且可以讓目標模式創建將要導出的表。

此外,如果複製到相同的服務器和數據庫,但不同的模式一定要:

  1. 使用SQL Server Native Client的(見
    https://i.stack.imgur.com/Qqhbd.png)源和目標
    參數
  2. 選擇與Source相同的數據庫名稱和 目標參數
  3. 選擇從一個或多個表中複製數據或 視圖(可選)在選擇源表格和視圖 GUI
  4. 將目標表的架構更改爲不同於 源架構(即,輸入類似「newschema.tablename」)
1

假定架構中有結構變化,這樣你就可以」只需執行備份並恢復到新數據庫,您可以右鍵單擊數據庫並選擇任務|生成腳本。在第二頁上有一個選項(默認爲關閉)來編寫數據腳本。

這將創建一系列SQL插入語句以及CREATE TABLE語句。您可能還需要選擇腳本觸發器,並檢查使用這些功能時可能需要的其他一些選項。

你也可以做一個INSERT跨越模式,或者使用SSIS如下所述:

How can I copy data records between two instances of an SQLServer database

有一點要注意的是,我認爲,出口數據設施不傳播索引,約束,觸發器等等,這就是爲什麼我喜歡用第一種方法獲取適量的數據,或者至少首先創建新的表格,然後是其他方法之一。

1

這裏是我做過什麼:

  1. 右鍵單擊源表,然後選擇「選擇前1000行」。
  2. 從select中刪除「top 1000」。
  3. 在條款
  4. 的上方添加「INTO newschema.newtable」
  5. 運行該查詢。
  6. 在新表上創建索引。

這不適用於所有人,因爲它要求在SQL Studio中使用同一連接提供新模式。

相關問題