我们有一个包含许多架构的旧数据库,我们正在寻求将该数据库拆分为几个较小的不同数据库。
有什么办法可以在同一台物理服务器上创建一个新数据库,然后将整个模式转移到新数据库上?
我们的表格如下:
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;
...
所有这些选项都需要很大的努力...还有其他方法可以将整个架构简单地移动到新数据库中吗?
答案 0 :(得分:1)
您可以为每个架构创建一个文件组,并将架构的表移动到相关的文件组中。之后,备份每个文件组并还原。
答案 1 :(得分:0)
我不知道有什么完全自动化的方法,但是可以借助Excel相对简单地完成。
在SSMS中,您可以使用“对象资源管理器详细信息”轻松(只需单击几下鼠标)多个表的脚本架构。
借助系统视图(sys.tables
,sys.columns
等)和Excel,您应该能够为所有表生成“ INSERT INTO .... SELECT ...”脚本。在几分钟之内。
在Excel(或类似的应用程序)中,粘贴表列表(使用sys.tables
获得),然后编写公式以为每个表生成脚本。