C#应用程序中的DACPAC突然无法部署

时间:2019-02-22 14:54:27

标签: c# dacpac

在C#Windows应用程序中,我们有一台同时运行的SQL Express 2012数据库服务器。

我们使用DACPAC通过DacServices对象从应用程序内部升级和部署新数据库。

即:DacServices.Deploy

我们当前正在使用Microsoft.SqlServices.Dac.dll版本12.0.3021.1。那似乎是我能找到的最新消息。

在SSMS中手动运行dacpac可以正常工作。直到最近,整个应用程序的运行情况都很好。现在,当尝试通过C#应用程序进行部署时,会出现以下异常:

  

{Microsoft.Data.Tools.Schema.Sql.Deployment.DeploymentFailedException:   内部错误。具有类型的数据库平台服务   Microsoft.Data.Tools.Schema.Sql.Sql110DatabaseSchemaProvider不是   有效。您必须确保服务已加载,或者您必须提供   有效数据库平台服务的完整类型名称。 ->   Microsoft.Data.Tools.Schema.Extensibility.ExtensibilityException:   内部错误。在   Microsoft.Data.Tools.Schema.Extensibility.ExtensionTypeLoader.InstantiateDatabaseSchemaProvider(String   databaseSchemaProviderType)   Microsoft.Data.Tools.Schema.Extensibility.ExtensionManager.UpdateExtensions()   在   Microsoft.Data.Tools.Schema.Extensibility.ExtensionManager..ctor(字符串   databaseSchemaProviderType)   Microsoft.Data.Tools.Schema.Extensibility.ExtensionManager。<> c__DisplayClass3.b__2()   在System.Lazy 1.CreateValue() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Lazy 1.get_Value()在   Microsoft.Data.Tools.Schema.Extensibility.ExtensionManager.GetExtensionManager(String   dsp)   Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeployment.CreateExtensionManagerFromModel(SqlPackage   包)-内部异常堆栈跟踪的结尾-在   Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeployment.CreateExtensionManagerFromModel(SqlPackage   包装)   Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeploymentEndpointPackage.OnInit(ErrorManager   错误,字符串targetDBName)位于   Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeployment..ctor(SqlDeploymentConstructor   构造函数)   Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeploymentConstructor.ConstructServiceImplementation()   在   Microsoft.SqlServer.Dac.DacServices.CreatePackageToDatabaseDeployment(String   connectionString,IPackageSource packageSource,字符串   targetDatabaseName,DacDeployOptions选项,ErrorManager   errorManager)   Microsoft.SqlServer.Dac.DeployOperation。<> c__DisplayClass3。<> c__DisplayClass5.b__1()   在Microsoft.Data.Tools.Schema.Sql.Dac.OperationLogger.Capture(操作   行动)   Microsoft.SqlServer.Dac.DeployOperation。<> c__DisplayClass3.b__0(Object   操作,请参见CancellationToken令牌)   Microsoft.SqlServer.Dac.Operation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext   上下文)   Microsoft.SqlServer.Dac.ReportMessageOperation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext   上下文)   Microsoft.SqlServer.Dac.OperationExtension.CompositeOperation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext   上下文)   Microsoft.SqlServer.Dac.OperationExtension.CompositeOperation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext   上下文)   Microsoft.SqlServer.Dac.DeployOperation.Microsoft.SqlServer.Dac.IOperation.Run(OperationContext   上下文)}

Microsoft的NUGET实际上具有版本12 dll的较低版本,我看不到将其更新为较大版本以尝试获得最新版本的位置。 (同时在NUGET上降级到Microsoft最新的dac dll也无法解决问题)

我怀疑Windows更新已通过并破坏了我们的开发版本,但无法证明这一点,也找不到任何信息。有人有见识吗?

0 个答案:

没有答案