是否可以将架构移动到 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.tables
、sys.columns
等)和 Excel 的帮助下,您应该能够在几分钟内为您的所有表格生成“INSERT INTO .... SELECT ...”脚本。
在 Excel(或类似应用程序)中粘贴表格列表(使用 sys.tables
获得),然后编写公式为每个表格生成脚本。
【讨论】:
【参考方案2】:您可以为每个模式创建一个文件组,并将一个模式的表移动到相关的文件组中。之后你备份每个文件组并恢复。
【讨论】:
以上是关于是否可以将架构移动到 SQL Server 中的另一个数据库?的主要内容,如果未能解决你的问题,请参考以下文章
将架构从 SQL Server 数据库传输到 SQL Server CE 数据库的简单方法?
批处理文件将文件从一个FTP文件夹移动到同一FTP中的另一个文件夹?
将用户服务的最后状态插入 SQL Server 中的另一个表