SqlPackage.exe命令在升级后抛出错误

时间:2016-05-20 02:13:34

标签: powershell deployment sql-server-data-tools dacpac sqlpackage

我们使用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'或其中一个   依赖。系统找不到指定的文件。

1 个答案:

答案 0 :(得分:4)

您的部署环境似乎缺少SqlDom版本12(Microsoft.SqlServer.TransactSql.ScriptDom.dll),预计将在GAC中。您可以从SQL Server 2014 Feature Pack页面下载它:https://www.microsoft.com/en-us/download/details.aspx?id=42295

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

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