Ссылка на внешние элементы из источника с именем 'xyz.dacpac' не может быть разрешена - PullRequest
0 голосов
/ 06 марта 2019

Я использую Microsoft.SqlServer.Dac.dll для программного развертывания моих dacpacs. Несмотря на то, что я включаю все dacpac для ссылочных проектов баз данных в целевом местоположении, я получаю «Не удалось разрешить ссылку на внешние элементы из источника с именем« xyz.dacpac »».

В конечном итоге развертывание завершается неудачно. Ниже приведена трассировка стека.

ERROR : The reference to external elements from the source named 'xyz.dacpac' could not be resolved, because no such source is loaded. 
ERROR : The reference to external elements from the source named 'xyz.dacpac' could not be resolved, because no such source is loaded. 
INFO  : Initializing deployment (Failed)  
ERROR : Version store out of memory (cleanup already attempted)  Microsoft.Isam.Esent.Interop.EsentVersionStoreOutOfMemoryException: Version store out of memory (cleanup already attempted)
   at Microsoft.Isam.Esent.Interop.Api.Check(Int32 err)
   at Microsoft.Isam.Esent.Interop.Api.JetUpdate(JET_SESID sesid, JET_TABLEID tableid, Byte[] bookmark, Int32 bookmarkSize, Int32& actualBookmarkSize)
   at Microsoft.Isam.Esent.Interop.Update.Save(Byte[] bookmark, Int32 bookmarkSize, Int32& actualBookmarkSize)
   at Microsoft.Data.Tools.Schema.SchemaModel.ModelStore.EseResultSet.Update(Action action)
   at Microsoft.Data.Tools.Schema.SchemaModel.ModelStore.ForwardModelRelationship.ReplaceNonComposedElement(StorageResultSet relEntryRow, ModelElement newElement)
   at Microsoft.Data.Tools.Schema.SchemaModel.ModelStore.RelationshipEntry.set_Element(IModelElement value)
   at Microsoft.Data.Tools.Schema.SchemaModel.DataSchemaModel.ReferenceLinker.ResolveInternalElementReferences()
   at Microsoft.Data.Tools.Schema.SchemaModel.DataSchemaModel.LoadExternals(TextReader input, String fileName, String logicalSourceName, IList`1 externalPartsSubstitution, Boolean suppressErrorsForMissingDependencies)
   at Microsoft.Data.Tools.Schema.SchemaModel.DataSchemaModel.AddReference(CustomSchemaData customData)
   at Microsoft.Data.Tools.Schema.SchemaModel.DataSchemaModel.OnCustomDataAdded(CustomSchemaData customData)
   at Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlSchemaModel.OnCustomDataAdded(CustomSchemaData customData)
   at Microsoft.Data.Tools.Schema.SchemaModel.DataSchemaModel.AddCustomData(CustomSchemaData customData, Boolean raiseEvents)
   at Microsoft.Data.Tools.Schema.Sql.Deployment.DacpacHeaderLoader.LoadReferences(ErrorManager errors, String packagePath)
   at Microsoft.Data.Tools.Schema.Sql.Deployment.DacpacHeaderLoader.Load(ErrorManager errors)
   at Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeploymentEndpointPackage.OnLoad(ErrorManager errors, DeploymentEngineContext context)
   at Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeployment.PrepareModels()
   at Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeployment.InitializePlanGeneratator()
   at Microsoft.Data.Tools.Schema.Sql.Deployment.SqlDeployment.CreateController(Action`1 msgHandler)
   at Microsoft.SqlServer.Dac.DacServices.CreateController(SqlDeployment deploymentEngine, ErrorManager errorManager)
   at Microsoft.SqlServer.Dac.DeployOperation.c__DisplayClass3.c__DisplayClass5.b__1()
   at Microsoft.Data.Tools.Schema.Sql.Dac.OperationLogger.Capture(Action action)
   at Microsoft.SqlServer.Dac.DeployOperation.c__DisplayClass3.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, DacDeployOptions options, CancellationToken cancellationToken, DacLoggingContext loggingContext, Action`3 reportPlanOperation, Boolean executePlan)
   at Microsoft.SqlServer.Dac.DacServices.Deploy(DacPackage package, String targetDatabaseName, Boolean upgradeExisting, DacDeployOptions options, Nullable`1 cancellationToken)
   at DacpacService.DeployDacPac(String connectionString, String dacpacName, IDictionary`2 sqlCmdParams, ModalProgressDialog dialog)

1 Ответ

0 голосов
/ 06 марта 2019

Как правило, это проблема цепочки ссылок.Если у вас есть проект (A.dacpac), который ссылается на другой (B.dacpac), вам, очевидно, необходимо включить B.dacpac в полный проект.

Однако, если B.dacpac ссылается на X.dacpac, Y.dacpac и ThirdParty.dacpac, вы получите ошибки, если они не включены в развертывание проекта, поскольку отсутствуют ссылки.

Однако, если у вас фактически есть все необходимые элементы между A.dacpac и B.dacpac, и вам не нужно ссылаться на что-либо в X, Y или ThirdParty, то вы можете установить для параметра Подавить неразрешенные ссылки в проекте A значение Trueи эти пропущенные ссылки будут игнорироваться.

...