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