2012-03-30 33 views
0

我在SqlServer 2008 R2中有一個模板模式(dbo),我們將其用作每個客戶數據的主模式。我怎樣才能輕鬆地將所有dbo的對象「複製」到一個新的模式中?從現有模式提供新模式

ALTER SCHEMA [target] TRANSFER [source].[objectname]刪除原始源對象,我需要它爲將來的副本。

我確實有一個VSTSDB構建過程,所以我可以將它的輸出和dbo上的查找/替換,但感覺像構建過程而不是配置過程。

看起來像這樣是分片世界中的典型過程,但我並沒有在這個過程中找到很多工具。

回答

-1

不幸的是沒有直接的辦法。您可以使用此:

SELECT 'ALTER SCHEMA NewSchema TRANSFER dbo.'+name 
    FROM sys.objects 
    WHERE type IN ('U','V','P','Fn') 
    AND SCHEMA_NAME(SCHEMA_ID) = 'dbo' 
+1

您的代碼將對象從一個模式移動到另一個模式,但OP正在詢問有關複製對象的信息。 – Pondlife 2012-04-02 06:25:48

0

一種方法是使用sqlcmd variables的架構名稱和其他值是按顧客,那麼你就必須當您運行DDL腳本設置變量。

+0

它看起來像沒有內置到SQL Server 2008 r2協助這項任務? – BozoJoe 2012-04-04 04:26:33

+0

@BozoJoe我不確定你的意思:sqlcmd變量是內置到SQL Server中的,或者更確切地說是運行SQL代碼的客戶端工具,這是它們的目的之一。沒有「複製模式」功能,因爲「複製」在每種情況下意味着不同。它包含數據嗎?還是權限? – Pondlife 2012-04-04 07:48:54