从现有模式供应新模式

时间:2012-03-30 19:51:06

标签: sql-server sql-server-2008 sharding

我在SqlServer 2008 R2中有一个模板架构(dbo),我们将其用作每个客户数据的主架构。如何轻松地将所有dbo的对象“复制”到新架构中?

ALTER SCHEMA [target] TRANSFER [source].[objectname]删除原始源对象,我需要它以备将来复制。

我确实有一个VSTSDB构建过程,所以我可以在dbo上获取其输出并查找/替换,但这感觉就像构建过程而不是供应过程。

这似乎是分片世界中的典型过程,但我没有发现这个过程的工具方式。

2 个答案:

答案 0 :(得分:0)

一种方法是使用sqlcmd variables作为模式名称和每个客户的其他值,然后您只需在运行DDL脚本时设置变量。

答案 1 :(得分:-1)

不幸的是没有直接的方法。你可以用这个:

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