我尝试通过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);
请问有人可以解决这个问题吗?
答案 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
加载的。