由于newsequentialid()功能不兼容,无法将bacpac文件导入Azure

Nic*_* BI 4 sql-server azure-sql-database

我正在尝试导入从本地SQL数据库创建的bacpac文件/数据层应用程序,并且我遇到以下错误:

服务操作期间遇到错误.无法导入包.警告SQL0:将SQL Server 2012指定为目标平台的项目可能会遇到与SQL Azure的兼容性问题.错误SQL72014:.Net SqlClient数据提供程序:消息40511,级别15,状态1,行2此版本的SQL Server不支持内置函数"newsequentialid".错误SQL72045:脚本执行错误.

我该如何修复或解决此错误?

Cas*_*sey 5

是的,Azure只支持newid()因为apaprently newsequentialid()是机器相关的.我想是有道理的,但多么痛苦!

您可以使用以下过程解决此问题:

  1. 将您的BACPAC文件重命名为zip文件.
  2. 在zip中打开model.xml
  3. 更换的情况下,newsequentialid()newid()
  4. 保存修改后的文件并将其复制回zip.

除了在Origin.xml中有一个校验和,你现在大部分时间完成了这个校验和,因为你已经使用了文件内容.

你必须重新计算校验和; 我用PowerShell做到了这一点

Get-FileHash '.\model.xml' -Algorithm SHA256
Run Code Online (Sandbox Code Playgroud)

然后打开Origin.xml并替换Checksums部分中的哈希.

将修改后的Origin.xml复制回zip并将文件重命名为.bacpac.现在可以毫无问题地导入.