Управление релизами> DACPAC - Арифметическая операция привела к переполнению
ВОПРОС:
Невозможно развернуть DACPAC через скрипт Powershell. Этот скрипт работает примерно на 20 других серверах баз данных, которые были настроены для управления выпусками.
РАБОЧАЯ ОБСТАНОВКА:
- Windows Server 2008 R2
- Powershell 2.0
- SQL Server 2008 R2 64 бит
- Visual Studio Premium 2012, обновление 4
- Инструменты данных SQL Server для Visual Studio 2012
- Выпуск управления развертыванием для Visual Studio 2013, обновление 4
НЕ РАБОТАЮЩАЯ СРЕДА:
- Windows Server 2008 R2
- Powershell 2.0
- SQL Server 2012 64 бит
- Visual Studio Premium 2012, обновление 4
- Инструменты данных SQL Server для Visual Studio 2012
- Выпуск управления развертыванием для Visual Studio 2013, обновление 4
COMMAND:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120\sqlpackage.exe
/Action:Publish
/SourceFile:"\\<Server>\Builds\<BuildDefinition>\<BuildNumber>\Databases\Arsenal\Arsenal.dacpac"
/Profile:"\\<Server>\Builds\<BuildDefinition>\<BuildNumber>\Deployment\Configuration\Databases\Publish_DEFAULT.xml"
/p:TreatVerificationErrorsAsWarnings="True"
/v:BuildNumber="<BuildNumber>"
где:
Publish_DEFAULT.xml
содержит следующие ключи:
<?xml version="1.0"?>
<Configurations>
<Properties>
<Property key="IncludeCompositeObjects" value="True" />
<Property key="ScriptDatabaseOptions" value="True" />
<Property key="BlockOnPossibleDataLoss" value="False" />
<Property key="DropObjectsNotInSource" value="True" />
<Property key="DropRoleMembersNotInSource" value="True" />
<Property key="DropPermissionsNotInSource" value="True" />
<Property key="DeployDatabaseInSingleUserMode" value="True" />
<Property key="BackupDatabaseBeforeChanges" value="False" />
<Property key="GenerateSmartDefaults" value="True" />
<Property key="TreatVerificationErrorsAsWarnings" value="True" />
</Properties>
<SQLCmdVariables>
<SQLCmdVariable key="BuildNumber" value="UNKNOWN" />
<SQLCmdVariable key="DeployLoadTestData" value="False" />
<SQLCmdVariable key="DeployPurgeData" value="False" />
</SQLCmdVariables>
</Configurations>
LOG:
Публикация в базе данных Инициализация развертывания (Пуск) Инициализация развертывания (Сбой) Произошел непредвиденный сбой: арифметическая операция привела к переполнению.
Необработанное исключение: System.OverflowException: арифметическая операция привела к переполнению. в System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(булево шифрование, булево trustServerCert, логическое интегрированное Security, логическое и marsCapable) в System.Data.SqlClient.TdsParser.Connect(шифрование внутреннего объекта, логическая переменная ServerInfo, резервный доступ к данным, резервный доступ к данным, резервный доступ к данным, резервный доступ к данным, резервная копия_интерполяра trustServerCert, булева integratedSecurity, булева withFailover) при System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(serverInfo serverInfo, струнного новый_пароль, SecureString newSecurePassword, булевой ignoreSniOpenTimeout, TimeoutTimer тайм-аут, Boolean withFailover) при System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(serverInfo serverInfo, String newPassword, SecureString newSecurePassword, логическое значение redirectedUserInstance, SqlConnectionString connectionOptions, учетные данные SqlCredential, тайм-аут TimeoutTimer) в System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginElnameConnect SoutTimeout Timeout qlCredential учетных данных, String Новый_пароль, SecureString newSecurePassword, Boolean redirectedUserInstance) в System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity идентичность, SqlConnectionString connectionOptions, SqlCredential учетных данных, объект providerInfo, Струнный Новый_пароль, SecureString newSecurePassword, логическое redirectedUserInstance, SqlConnectionString userConnectionOptions) в системе.Data.SqlClient.SqlConnectionFactory.CreateConnection(опции DbConnectionOptions, DbConnectionPoolKey poolKey, объект poolGroupProviderInfo, DbConnectionPool бассейн, DbConnection owningConnection, DbConnectionOptions userOptions) в System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) в системе. Data.ProviderBase.DbConnectionFactory.TryGetConnection (DbConnection owningConnection, TaskCompletionSource
1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource
1 попытка, DbConnectionOptions userOptions) в System.Data.SqlClient.SqlConnection.TryOpen (TaskCompletionSource1 retry) at System.Data.SqlClient.SqlConnection.Open() at Microsoft.Data.Tools.Schema.Common.SqlClient.ReliableSqlConnection.<OpenConnection>b__0() at Microsoft.Data.Tools.Schema.Common.SqlClient.RetryPolicy.<>c__DisplayClass4.<ExecuteAction>b__3(RetryState retryState) at Microsoft.Data.Tools.Schema.Common.SqlClient.RetryPolicy.ExecuteAction[R](Func
2 функа, Nullable1 token) at Microsoft.Data.Tools.Schema.Common.SqlClient.RetryPolicy.ExecuteAction(Action
1 действие, Nullable1 token) at Microsoft.Data.Tools.Schema.Common.SqlClient.ReliableSqlConnection.OpenConnection() at Microsoft.Data.Tools.Schema.Common.SqlClient.ReliableConnectionHelper.OpenConnection(String connectionString, Boolean useRetry) at Microsoft.Data.Tools.Schema.Common.SqlClient.ReliableConnectionHelper.OpenConnection(SqlConnectionStringBuilder csb, Action
1 используя Соединение, Предикат1 catchException, Boolean useRetry) at Microsoft.Data.Tools.Schema.Common.SqlClient.ReliableConnectionHelper.GetServerAndDatabaseVersion(String connectionString, ServerAndDatabaseInfo& info) at Microsoft.Data.Tools.Schema.Sql.SqlDatabaseSchemaProviderFamily.DetermineDatabaseSchemaProvider(String connectionString) at Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeploymentEndpointServer.GetProviderType(DatabaseSchemaProviderFamily connectionSniffer, String connectionString, Type& providerType, Boolean& validDataSource) at Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeploymentEndpointServer.OnInit(ErrorManager errors, String targetDBName) at Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeployment..ctor(SqlDeploymentConstructor constructor) at Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeploymentConstructor.ConstructServiceImplementation() at Microsoft.SqlServer.Dac.DacServices.CreatePackageToDatabaseDeployment(String connectionString, IPackageSource packageSource, String targetDatabaseName, DacAzureDatabaseSpecification creationDefaults, DacDeployOptions options, ErrorManager errorManager) at Microsoft.SqlServer.Dac.DeployOperation.<>c__DisplayClass3.<>c__DisplayClass5.<CreatePlanInitializationOperation>b__1() at Microsoft.Data.Tools.Schema.Sql.Dac.OperationLogger.Capture(Action action) at Microsoft.SqlServer.Dac.DeployOperation.<>c__DisplayClass3.<CreatePlanInitializationOperation>b__0(Object operation, CancellationToken token) at Microsoft.SqlServer.Dac.Operation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext context) at Microsoft.SqlServer.Dac.ReportMessageOperation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext context) at Microsoft.SqlServer.Dac.OperationExtension.CompositeOperation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext context) at Microsoft.SqlServer.Dac.OperationExtension.CompositeOperation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext context) at Microsoft.SqlServer.Dac.DeployOperation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext context) at Microsoft.SqlServer.Dac.OperationExtension.Execute(IOperation operation, DacLoggingContext loggingContext, CancellationToken cancellationToken) at Microsoft.SqlServer.Dac.DacServices.InternalDeploy(IPackageSource packageSource, Boolean isDacpac, String targetDatabaseName, DacAzureDatabaseSpecification creationDefaults, DacDeployOptions options, CancellationToken cancellationToken, DacLoggingContext loggingContext) at Microsoft.SqlServer.Dac.DacServices.Deploy(DacPackage package, String targetDatabaseName, Boolean upgradeExisting, DacDeployOptions options, Nullable
1 cancellationToken) в Microsoft.Data.Tools.Schema.CommandLineTool.DacServiceUtil.<> C__DisplayClass8.b__0(служба DacServices) в Microsoft.Data.Tools.Schema.CommandLineTool.DacServiceUtil.ExecuteDeployOperation, сообщение StringRepper, StringPlayer sourceIsPackage, Boolean targetIsPackage, Func1 generateScriptFromPackage, Func
2 generateScriptFromDatabase) в Microsoft.Data.Tools.Schema.CommandLineTool.DacServiceUtil.DoDeployAction (DeployArguments parsedArgs, Action1 writeError, Action
2 writeMessage, Action`1 writeWarning, CancellationToken cancellationToken) в Microsoft.Data.Tools.Schema.CommandLineTool.Program.DoDeployActions(CommandLineArguments parsedArgs) в Microsoft.Data.Tools.Schema.CommandLineTool.Program.ParformAction.Data.Tools.Schema.CommandLineTool.Program.Run(String[] args) в Microsoft.Data.Tools.Schema.CommandLineTool.Program.Main(String[] args)
ДОПОЛНИТЕЛЬНЫЙ КОММЕНТАРИЙ:
Единственное различие между этими двумя средами - это версия SQL Server ... Однако у меня есть сервер с SQL Server 2012, который работает!
Я запустил скрипт Powershell в качестве удостоверения службы: агент развертывания Microsoft... та же ошибка файла журнала; однако sqlpackage.exe выдает следующую ошибку:
Подпись проблемы: Проблема Имя события: CLR20r3 Проблема Подпись 01: sqlpackage.exe Подпись проблемы 02: 12.0.2743.1 Подпись проблемы 03: 5438200c Подпись проблемы 04: System.Data Подпись проблемы 05: 4.0.30319.18408 Подпись проблемы 06: 52310bef Подпись проблемы 07: 28b2 Проблема Подпись 08: 6e Проблема Подпись 09: System.OverflowException Версия ОС: 6.1.7601.2.1.0.272.7 Идентификатор локали: 1033 Дополнительная информация 1: d90e Дополнительная информация 2: d90ee7d582c41ae7b6b96ca9c0463ab1 Дополнительная информация 3: 5e41 Дополнительная информация 4: 5e414a675c6c610
2 ответа
Вместо того, чтобы пытаться публиковать DACPAC напрямую, как насчет генерации сценария изменения (опция флажка в профиле публикации) и запуска T-SQL, сгенерированного для базы данных? Другой вариант - открыть командную строку в папке sqlpackage.exe и запустить команду напрямую, чтобы увидеть, дает ли это более четкое сообщение об ошибке. Кроме того, работает ли профиль публикации непосредственно для базы данных? Visual Studio может пролить свет на это.
ВЫПУСК:
Этот сервер был обновлен до SQL Server 2012 с SQL Server 2005 и включен для развертываний DACPAC (SSDT) с помощью Release Management. Этапы обновления отличались от всех других работающих серверов баз данных. SSDT и RM были установлены после SQL Server 2012 (не ранее)
РЕШЕНИЕ:
Восстановите сервер базы данных, выполнив следующие действия:
- Добавление пользователей и групп домена в локальную группу: администраторы (перезапуск)
- Добавить роль:
- Веб-сервер (IIS) (перезагрузка)
- Добавить функции:
- Desktop Experience (перезагрузка)
- Инструменты удаленного администрирования сервера
- SMTP-сервер
- Службы SNMP
- Интегрированная среда сценариев Windows PowerShell (ISE)
- Служба активации Windows
- Расширение WinRM IIS
- Установить обновления окна (перезапустить)
- Установить виртуальный CloneDrive
- Установите и настройте Release Management Deployer для Visual Studio 2013, обновление 4
- Сервер регистрации: DEVSQL2 с сервером управления выпусками
- Настроить powershell (set-executepolicy remotesigned)
- Установите средства данных SQL Server (SSDT) для Visual Studio 2012
- Установить обновления окна (перезапустить)
- Установите SQL Server 2005 (64-разрядная версия) (экземпляр по умолчанию)
- Установить Server 2005 Enterprise (64-разрядная версия) Обновление 4 (экземпляр по умолчанию)
- Установить обновления окна (перезапустить)
- Настройте площадь поверхности SQL Server
- Настройка служб отчетов SQL Server (SSRS)
- Настроить каталоги по умолчанию
- Переместить файлы tempdb
- Создать "стандартные" логины / роли
- Восстановить "золотые" базы данных
- Развертывание RM проекта TFS - PASSED
- Установить SQL Server 2012 Enterprise (64-разрядная версия) (экземпляр по умолчанию)
- Установить обновления окна (перезапустить)
- Развертывание RM проекта TFS - PASSED