2016-05-20 5 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) , который, как ожидается, будет в ПКК. Вы можете загрузить его с сайта Feature Pack на SQL Server 2014 здесь: https://www.microsoft.com/en-us/download/details.aspx?id=42295

Есть два файла, которые вы должны скачать и установить - версии SqlDom.msi для x64 и x86.

Похоже, что в настоящее время вы используете версию платформы приложений уровня данных SQL Server 2014. Обратите внимание: если вы обновляете версию платформы приложений уровня данных SQL Server 2016 (DacFX), вам необходимо убедиться, что установлена ​​более новая версия (v13) зависимостей DacFX (SqlSysClrTypes.msi и SqlDom.msi) ,