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

Posted

技术标签:

【中文标题】是否可以将架构移动到 SQL Server 中的另一个数据库?【英文标题】:Is it possible to move a schema to another database in SQL Server? 【发布时间】:2019-07-03 01:26:51 【问题描述】:

我们有一个旧数据库,其中包含数十个模式,我们希望将该数据库拆分为几个较小的不同数据库。

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

我们的表格如下所示:

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;
...

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

【问题讨论】:

这可能更适合Database Administrators 看起来您在那里而不是在这里获得答案的机会更大。 同意肯 - 简短回答 - 否。 @KenWhite 公平电话;有没有办法移动一个问题,或者我应该关闭这个问题并将其作为一个新问题提出? 您可以等到它获得足够的迁移投票(现在需要 5 个中的 3 个),或者您可以只 edit 帖子,选择所有文本,然后按 Ctrl+C 复制,取消编辑,删除帖子,然后转到其他站点并将其粘贴到新问题中。这保留了所有格式和内容,您只需要添加标题和标签。您喜欢哪个取决于您,但如果您在其他网站上发布,请在此处删除。强烈反对跨站发帖。 【参考方案1】:

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

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

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

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

【讨论】:

【参考方案2】:

您可以为每个模式创建一个文件组,并将一个模式的表移动到相关的文件组中。之后你备份每个文件组并恢复。

【讨论】:

以上是关于是否可以将架构移动到 SQL Server 中的另一个数据库?的主要内容,如果未能解决你的问题,请参考以下文章

将架构从 SQL Server 数据库传输到 SQL Server CE 数据库的简单方法?

批处理文件将文件从一个FTP文件夹移动到同一FTP中的另一个文件夹?

将数据和架构从 MySQL 迁移到 SQL Server

将用户服务的最后状态插入 SQL Server 中的另一个表

是否可以利用 SQL Server 数据库项目来管理一组具有各种架构差异的数据库?

如何将架构绑定添加到 SQL Server 2008 中的视图