有没有一种方法可以成功导入超过4GB的bacpac,我需要在其中更改排序规则



我正在将数据库从内部部署SQL迁移到Azure。这是一个我们已经成功执行了好几次的过程。

这个过程通常很简单。我将数据库导出到数据层应用程序,将扩展名从.bacpac更改为.zip,获取model.xml文件,将排序规则从Latin1_General_CI_AS更改为SQL_Latin1_General_CP1_CI_AS,重新计算校验和,更新Origin.xml文件,保存回.zip文件,将扩展名将.zip更改回.bacpac并导入。简单。

但这次不行。

.bacpac比平时大得多,大约4GB

作为一个练习,我尝试简单地提取model.xml并将其保存回zip文件,而不进行任何修改。当我第二次尝试这样做时,Windows抱怨.zip文件是";腐败的;????

即使我根本不修改.bacpac,当我尝试导入它时,import会抱怨:由于"无法加载包",请求Id为"的ImportExport操作失败。不支持多磁盘ZIP格式。不支持多磁盘ZIP格式。'

我被困在这里了。我能在这里做点什么吗?例如:是否可以使用更大的(4GB+(bacpac并重新配置它,这样它就不会被视为";"多任务";ZIP格式?也许用7zip什么的

感谢

如果其他人遇到同样的问题。。。。我想出了一个变通办法。这不是一个完整的解决方案,我仍然愿意听到,但这是可以接受的。

我们迁移的数据库包含一个带有VARCHAR(MAX(列的表,该列用于存储从文档中提取的文本,因此我们可以在该表上实现全文索引,并为用户提供某些搜索功能。与数据库的其他部分相比,这个表是巨大的。

当我创建一个.bacpac,其中包含除该表之外的整个数据库时,bacpac要小得多,事实上,它小得多以至于我们的常规过程可以再次工作,我可以更正排序规则并导入.bacpac从而迁移除该表以外的整个数据库。

完成后,我转到SSMS中的本地数据库,右键单击并使用Tasks Import Data向导,将源指向包含"的本地副本;"大桌子";,将目标指向迁移的Azure数据库并导入表,确保其列定义正确。以这种方式进口大约花了一个小时,但在我们的业务中,这是一个可以接受的时间框架。导入之后,我重新创建约束、键和索引,并重新创建全文索引。

这不是一个恰当的";回答";回答我的问题。它在我们的特定情况下对我们有效,也可能对遇到同样问题的另一位读者有效。如果是,不客气。如果没有,我希望其他人能想出一个更好的答案。这是hopin'

最新更新