2012-03-30 90 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