3

我们使用 PowerShell 脚本来部署 SQL 数据库。该脚本使用 SqlPackage.exe 实用程序来发布我们的主数据库,它工作正常,直到我们将 SSDT 升级到最新版本 SSDT 2015 时,它声明抛出以下错误。

PowerShell 脚本行:

& "C:\Program Files (x86)\Microsoft SQL Server\120\DAC\bin\SqlPackage.exe" /Action:Publish /SourceFile:"$DatabaseDacpacLocation" /TargetServerName:$DataServerSqlInstance /TargetDatabaseName:$Database /Variables:master="$MasterDatabase" /v:DatabaseName="$pDatabaseName" /p:ExcludeObjectType=Sequences

错误:

未处理的异常:System.TypeInitializationException:“Microsoft.SqlServer.Dac.DacPackage”的类型初始化程序引发了异常。---> System.TypeInitializationException:“Microsoft.SqlServer.Dac.DacServices”的类型初始化程序引发了异常。---> System.TypeInitializationException:“SqlSchemaModelStaticState”的类型初始化程序引发了异常。---> System.IO.FileNotFoundException:无法加载文件或程序集“Microsoft.SqlServer.TransactSql.ScriptDom,Version=12.0.0.0,Culture=neutral,PublicKeyToken=89845dcd8080cc91”或其依赖项之一。该系统找不到指定的文件。

4

1 回答 1

5

看起来您的部署环境缺少 SqlDom 版本 12 (Microsoft.SqlServer.TransactSql.ScriptDom.dll),它应该在 GAC 中。您可以从此处的 SQL Server 2014 功能包页面下载它:https ://www.microsoft.com/en-us/download/details.aspx?id=42295

您应该下载并安装两个文件 - SqlDom.msi 的 x64 和 x86 版本。

看来您当前正在使用 SQL Server 2014 版本的数据层应用程序框架。请注意,如果您更新到数据层应用程序框架 (DacFX) 的 SQL Server 2016 版本,则需要确保还安装了 DacFX 依赖项(SqlSysClrTypes.msi 和 SqlDom.msi)的较新版本 (v13) .

于 2016-05-20T15:30:14.847 回答