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

Sql server Can';由于newsequentialid()功能不兼容,无法将bacpac文件导入Azure,sql-server,azure-sql-database,Sql Server,Azure Sql Database,我试图导入从本地SQL数据库创建的bacpac文件/数据层应用程序,但遇到以下错误: 服务操作期间遇到错误。无法导入包。警告SQL0:将SQL Server 2012指定为目标平台的项目可能遇到与SQL Azure的兼容性问题。错误SQL72014:.Net SqlClient数据提供程序:Msg 40511,级别15,状态1,第2行内置函数“newsequentialid”在此版本的SQL Server中不受支持。错误SQL72045:脚本执行错误 如何修复或解决此错误?是的,Azure只支持

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

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


如何修复或解决此错误?

是的,Azure只支持
newid()
,因为
newsequentialid()
依赖于机器。我想这是有道理的,但这是多么痛苦啊

您可以通过以下步骤解决此问题:

  • 将BACPAC文件重命名为zip文件
  • 在zip文件中打开model.xml
  • newsequentialid()
    的实例替换为
    newid()
  • 保存修改后的文件并将其复制回zip
  • 除了Origin.xml中有一个校验和(checksum)之外,大部分工作都会在这里完成,但它现在会失败,因为您已经篡改了文件内容

    你必须重新计算校验和;我是用PowerShell做的

    Get-FileHash '.\model.xml' -Algorithm SHA256
    
    然后打开Origin.xml并替换校验和部分中的哈希

    将修改后的Origin.xml复制回zip文件,并将文件重命名回.bacpac。现在可以无问题进口