“无法从包中读取模式模型头信息。”

时间:2019-06-19 08:50:06

标签: c# sql-server dacpac

我尝试通过Visual Studio C#中的代码将.dacpac部署到我的MS Sql数据库中,并且每当要部署.dacpac文件时,都会引发此错误:

Microsoft.SqlServer.Dac.DacServicesException:'无法从包中读取架构模型头信息。'

SqlPackageException:不支持模型版本“ 2.9”。

我经历了多个线程并尝试对其进行修复,但没有任何方法可以解决我的错误。

我为使用Microsoft.SqlServer.Dac导入了Microsoft.SqlServer.Dac-x86 Nuget软件包;命名空间。

我也安装了SSMS18。

当我通过Visual Studios SQL Server对象资源管理器执行该操作时,我也可以部署相同的.dacpac文件(那里没有错误并且可以正常运行),但是我需要在代码中执行该操作。

连接字符串和文件路径都正确。

这是我使用的方法(最后一行是出现错误的地方):

        var dbServices = new DacServices(connString);

        var dbPackage = DacPackage.Load(new FileStream(dacpacPath, FileMode.Open, FileAccess.Read), DacSchemaModelStorageType.Memory, FileAccess.Read);

        var dbDeployOptions = new DacDeployOptions
        {
            CreateNewDatabase = true
        };

        dbServices.Deploy(dbPackage, NewDBName.Text, upgradeExisting: true, options: dbDeployOptions);

请问有人可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

在我的情况下,加载了错误版本的dacpack Dll(Microsoft.SqlServer.Dac.dll)。是从x86 for SQL 2015 \Program Files (x86)\Microsoft SQL Server\130\DAC\bin加载的,而不是从x64 for SQL 2017 \Program Files\Microsoft SQL Server\140\DAC\bin加载的。