问题:
无法通过 Powershell 脚本部署 DACPAC。此脚本适用于大约 20 个已配置用于发布管理的其他数据库服务器。
工作环境:
- 视窗服务器 2008 R2
- 电源外壳 2.0
- SQL Server 2008 R2 64 位
- Visual Studio 高级版 2012 更新 4
- 适用于 Visual Studio 2012 的 SQL Server 数据工具
- Visual Studio 2013 Update 4 的发布管理部署程序
非工作环境:
- 视窗服务器 2008 R2
- 电源外壳 2.0
- SQL Server 2012 64 位
- Visual Studio 高级版 2012 更新 4
- 适用于 Visual Studio 2012 的 SQL Server 数据工具
- Visual Studio 2013 Update 4 的发布管理部署程序
命令:
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>
日志:
发布到数据库初始化部署(开始)初始化部署(失败)发生意外失败:算术运算导致溢出..
未处理的异常:System.OverflowException:算术运算导致溢出。在 System.Data.SqlClient.TdsParser.ConsumePreLoginHandshake(Boolean encrypt, Boolean trustServerCert, Boolean IntegratedSecurity, Boolean & marsCapable) 在 System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean在 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin (ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) 在 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo) 的 trustServerCert,布尔集成安全,布尔 withFailover ,
1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource
1 次重试,DbConnectionOptions userOptions)在 Microsoft.Data.Tools.Schema.CommandLineTool.DacServiceUtil.<>c__DisplayClass8的 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 func, Nullable1 token) at Microsoft.Data.Tools.Schema.Common.SqlClient.RetryPolicy.ExecuteAction(Action
1 action, 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 usingConnection, Predicate 1 cancelToken)。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
b__0(DacServices 服务)在 Microsoft.Data.Tools.Schema.CommandLineTool.DacServiceUtil.ExecuteDeployOperation(字符串 connectionString,字符串文件路径,MessageWrapper messageWrapper,布尔 sourceIsPackage,布尔 targetIsPackage,Func1 generateScriptFromPackage, Func
2 generateScriptFromDatabase)在 Microsoft.Data.Tools.Schema.CommandLineTool。 DacServiceUtil.DoDeployAction(DeployArguments parsedArgs, Action1 writeError, Action
2 writeMessage, Action`1 writeWarning, CancellationToken cancelToken) 在 Microsoft.Data.Tools.Schema.CommandLineTool.Program.PerformAction(CommandLineArguments parsedArgs) 在 Microsoft.Data.Tools.Schema.CommandLineTool.Program.DoDeployActions(CommandLineArguments parsedArgs) 在 Microsoft。 Data.Tools.Schema.CommandLineTool.Program.Run(String[] args) 在 Microsoft.Data.Tools.Schema.CommandLineTool.Program.Main(String[] args)
附加评论:
两种环境之间的唯一区别是 SQL Server 的版本......但是,我确实有一台运行 SQL Server 2012 的服务器!
我以服务的身份运行了 Powershell 脚本:Microsoft Deployment Agent ... 相同的日志文件错误;但是,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 区域设置 ID:1033 附加信息 1:d90e 附加信息 2:d90ee7d582c41ae7b6b96ca9c0463ab1 附加信息 3:5e41 附加信息 4:5e411ccaac60cb66751cc900cf