以前遇到了问题,在此备注一下:sql
由于两个环境基本上能够认为是隔离的,因此迁移过程基本上只有经过导出、导入的方式(也是官方推荐的方式):数据库
一、从global上进行数据库的export操做(扩展名bacpac),导出到blob中。经过Azure管理界面完成(固然也能够经过azure命令行,不过操做比较简单就用界面了)服务器
二、从global的blob中将文件复制到mooncake的blob中。能够手动下载、上传,若是文件很大的话,也能够经过AzCopy命令行实现服务器端的点对点复制。工具
三、在mooncake上经过bacpac进行数据库导入。经过Azure管理界面完成spa
注意事项:命令行
一、导入、导出的时候,由于对数据库资源消耗很是高(我设置了DTU报警规则,导出期间的DTU基本上停留在95%以上),因此建议先把数据库scale up。我是把S1级别临时提高到了S2级别(DTU从20上升到50)code
二、导出过程会很是慢,要有耐心(50DTU的状况下,实测导出速度在7GB/小时左右,没错,小时……)orm
三、这种相似跨两个产品的导入导出极可能会遇到问题(见下文)blog
虽然global和mooncake都标识为v12版本的数据库(至关于SQL Server 2014),可是内部版本极可能会不一致,资源
此次导入的时候就遇到了这个错误:
“Error importing database:Could not read schema model header information from package. The model version '3.5' is not supported”
缘由是global比mooncake的版本略新,致使导出导入的文件结构不兼容
解决方法就是先把global数据库的某些设置调整成和mooncake一致的,针对model version 3.5的话执行以下T-SQL:
ALTER DATABASE [dbname] SET TEMPORAL_HISTORY_RETENTION ON
而后再从新导出……(对,从新导出………………)
其实这个问题和Azure无关,是SQL Server的问题,以前在model version 3.3的时候也出现过。
搜索解决方案用了有一阵时间,其实还有两种方案也是可行的:
方案一:使用最新版的SSMS进行导入,它会考虑旧版本兼容的问题。我确实下载且安装而且开始尝试导入建立数据库了,然而考虑到从本地到Azure的带宽,我看了一眼导入速度就绝望的关掉了……
方案二:使用某些工具直接把数据库中全部数据dump成SQL语句,而后再执行。这种方法理论上可行,不过我连试的念头都没有……依然是带宽问题
参考连接: