SqlPackage不导出整个数据库

时间:2015-07-01 18:20:56

标签: sql-server azure-sql-database sql-server-data-tools

我正在尝试将相当大的数据库(50GB)移动到Azure。我在本地Sql Server上运行此命令以生成我可以上传的bacpac。

SqlPackage.exe / a:Export / ssn:localhost / sdn:MDBILLING / su:sa / sp:SomePassword /tf:"D:\test.bacpac“

导出不会打印任何错误,并以“成功导出数据库并将其保存到文件'D:\ test.bacpac'完成。”

当我查看文件系统中的bacpac时,它总是达到3.7GB。没有办法将50GB的数据库压缩得那么小。我无论如何都将它上传到Azure。包上传成功,但是当我查询Azure数据库时,大多数表返回0行。这几乎就像bacpac不包含我所有数据库的数据一样。

此导出方法是否存在任何已知限制?数据库大小,某些数据类型等?

我尝试使用64位版本的SqlPackage读取,有些人在大型数据库上遇到内存不足问题,但我没有收到此错误或任何错误。

UPDATE / EDIT:我通过恢复备份然后从中提取bacpac确保导出事务一致后,我取得了一些进展。但是,现在我在上传到Azure时遇到了一个新错误。

我收到以下消息(使用S3数据库):

在服务操作期间遇到错误。数据计划执行失败,消息发生一个或多个错误。发生了一个或多个错误。发生了一个或多个错误。发生了一个或多个错误。 XML解析:文档解析需要太多内存发生了一个或多个错误。 XML解析:文档解析需要太多内存

1 个答案:

答案 0 :(得分:1)

问题得到解决。我的问题是双重的。

首先,因为bacpac操作不是事务一致的,所以我不得不从备份恢复并从恢复的数据库中取出bacpac。这确保了用户在生成bacpac时没有添加行。

第二个问题是我的数据库中的XML列。该表有大约1700万行,其中大约250行,其中存储了非常大的xml文档(200000多个字符)。删除那250行并重新导入它解决了我的问题。我真的不认为这是Azure出现问题的xml文档的大小。我认为那些大型文档包含xml解析器不喜欢的特殊字符。

我不清楚Sql Server如何允许不可解析的xml首先进入我的数据库,但这是另一个问题。