是否可以将架构移动到SQL Server中的另一个数据库?

时间:2019-07-03 01:26:51

标签: sql-server

我们有一个包含许多架构的旧数据库,我们正在寻求将该数据库拆分为几个较小的不同数据库。

有什么办法可以在同一台物理服务器上创建一个新数据库,然后将整个模式转移到新数据库上?

我们的表格如下:

Foo.Table1
Foo.Table2
Foo.Table3
...
Bar.Table1
Bar.Table2
...
Xxx.Table1
Xxx.Table2
...

...并且我想将Foo.*移至新数据库。

通常,建议通过某种按表导出/导入的方式来完成此操作,但这对于架构中的150多个表来说非常麻烦。

就我的琐碎研究而言,选择似乎是:

  • 分别导出/导入每个表。

  • 备份整个数据库,还原到其他目标位置并删除其他所有内容(这很痛苦,因为整个数据库约为900GB)。

  • 将单个架构的dacpac部署到新数据库,并进行跨数据库的初始种子植入,即:

INSERT INTO newDb.Foo.Table1 SELECT * FROM oldDb.Foo.Table1;
INSERT INTO newDb.Foo.Table2 SELECT * FROM oldDb.Foo.Table2;
INSERT INTO newDb.Foo.Table3 SELECT * FROM oldDb.Foo.Table3;
...

所有这些选项都需要很大的努力...还有其他方法可以将整个架构简单地移动到新数据库中吗?

2 个答案:

答案 0 :(得分:1)

您可以为每个架构创建一个文件组,并将架构的表移动到相关的文件组中。之后,备份每个文件组并还原。

答案 1 :(得分:0)

我不知道有什么完全自动化的方法,但是可以借助Excel相对简单地完成。

在SSMS中,您可以使用“对象资源管理器详细信息”轻松(只需单击几下鼠标)多个表的脚本架构。

借助系统视图(sys.tablessys.columns等)和Excel,您应该能够为所有表生成“ INSERT INTO .... SELECT ...”脚本。在几分钟之内。

在Excel(或类似的应用程序)中,粘贴表列表(使用sys.tables获得),然后编写公式以为每个表生成脚本。