2016-05-20 169 views
1

我們使用PowerShell腳本來部署SQL數據庫。這個腳本使用SqlPackage.exe工具來發布我們的主數據庫,它工作正常,直到我們將SSDT升級到它的最新版本SSDT 2015時,它聲稱拋出下面的錯誤。升級後SqlPackage.exe命令拋出錯誤

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 

錯誤:

Unhandled Exception: System.TypeInitializationException: The type initializer for 'Microsoft.SqlServer.Dac.DacPackage' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Microsoft.SqlServer.Dac.DacServices' threw an exception. ---> System.TypeInitializationException: The type initializer for 'SqlSchemaModelStaticState' threw an exception. ---> System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.SqlServer.TransactSql.ScriptDom, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified.

回答

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的依賴項(SqlSysClrTypes.msi和SqlDom.msi)的較新版本(v13) 。