web-dev-qa-db-ja.com

公開プロファイルを使用した公開でのエラー-「DropExtendedPropertiesNotInSourceは、選択したDoNotDropObjectType ExtendedPropertiesと競合します」

タイトルが言うように、パブリッシュプロファイルXMLを使用してパブリッシュしようとすると、このエラーが発生します。

DropExtendedPropertiesNotInSourceは、選択したDoNotDropObjectType ExtendedPropertiesと競合します

ソースにないオブジェクトをターゲットにドロップするように指定しましたが、テーブルとシノニム以外のすべてを除外しました。このエラーに関連していると私が信じている2行は次のとおりです。

<DropObjectsNotInSource>True</DropObjectsNotInSource>
<DoNotDropExtendedProperties>True</DoNotDropExtendedProperties>

以下の完全な公開プロファイル。ターゲットデータベース情報は削除されています。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IncludeCompositeObjects>True</IncludeCompositeObjects>
<TargetDatabaseName>REDACTED</TargetDatabaseName>
<DeployScriptFileName>REDACTED.sql</DeployScriptFileName>
<TargetConnectionString>Data Source=REDACTED;Integrated Security=True;Persist Security Info=False;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=True</TargetConnectionString>
<BlockOnPossibleDataLoss>True</BlockOnPossibleDataLoss>
<DropObjectsNotInSource>True</DropObjectsNotInSource>
<DoNotDropAggregates>True</DoNotDropAggregates>
<DoNotDropApplicationRoles>True</DoNotDropApplicationRoles>
<DoNotDropAssemblies>True</DoNotDropAssemblies>
<DoNotDropAsymmetricKeys>True</DoNotDropAsymmetricKeys>
<DoNotDropAudits>True</DoNotDropAudits>
<DoNotDropBrokerPriorities>True</DoNotDropBrokerPriorities>
<DoNotDropCertificates>True</DoNotDropCertificates>
<DoNotDropClrUserDefinedTypes>True</DoNotDropClrUserDefinedTypes>
<DoNotDropColumnEncryptionKeys>True</DoNotDropColumnEncryptionKeys>
<DoNotDropColumnMasterKeys>True</DoNotDropColumnMasterKeys>
<DoNotDropContracts>True</DoNotDropContracts>
<DoNotDropCredentials>True</DoNotDropCredentials>
<DoNotDropCryptographicProviders>True</DoNotDropCryptographicProviders>
<DoNotDropDatabaseAuditSpecifications>True</DoNotDropDatabaseAuditSpecifications>
<DoNotDropDatabaseRoles>True</DoNotDropDatabaseRoles>
<DoNotDropDatabaseScopedCredentials>True</DoNotDropDatabaseScopedCredentials>
<DoNotDropDatabaseTriggers>True</DoNotDropDatabaseTriggers>
<DoNotDropDefaults>True</DoNotDropDefaults>
<DoNotDropEndpoints>True</DoNotDropEndpoints>
<DoNotDropErrorMessages>True</DoNotDropErrorMessages>
<DoNotDropEventSessions>True</DoNotDropEventSessions>
<DoNotDropEventNotifications>True</DoNotDropEventNotifications>
<DoNotDropExtendedProperties>True</DoNotDropExtendedProperties>
<DoNotDropExternalDataSources>True</DoNotDropExternalDataSources>
<DoNotDropExternalFileFormats>True</DoNotDropExternalFileFormats>
<DoNotDropExternalTables>True</DoNotDropExternalTables>
<DoNotDropFileTables>True</DoNotDropFileTables>
<DoNotDropFilegroups>True</DoNotDropFilegroups>
<DoNotDropFullTextCatalogs>True</DoNotDropFullTextCatalogs>
<DoNotDropFullTextStoplists>True</DoNotDropFullTextStoplists>
<DoNotDropLinkedServerLogins>True</DoNotDropLinkedServerLogins>
<DoNotDropLinkedServers>True</DoNotDropLinkedServers>
<DoNotDropLogins>True</DoNotDropLogins>
<DoNotDropMessageTypes>True</DoNotDropMessageTypes>
<DoNotDropPartitionFunctions>True</DoNotDropPartitionFunctions>
<DoNotDropPartitionSchemes>True</DoNotDropPartitionSchemes>
<DoNotDropPermissions>True</DoNotDropPermissions>
<DoNotDropQueues>True</DoNotDropQueues>
<DoNotDropRemoteServiceBindings>True</DoNotDropRemoteServiceBindings>
<DoNotDropRoutes>True</DoNotDropRoutes>
<DoNotDropRoleMembership>True</DoNotDropRoleMembership>
<DoNotDropRules>True</DoNotDropRules>
<DoNotDropScalarValuedFunctions>True</DoNotDropScalarValuedFunctions>
<DoNotDropSearchPropertyLists>True</DoNotDropSearchPropertyLists>
<DoNotDropSecurityPolicies>True</DoNotDropSecurityPolicies>
<DoNotDropSequences>True</DoNotDropSequences>
<DoNotDropServerAuditSpecifications>True</DoNotDropServerAuditSpecifications>
<DoNotDropServerRoles>True</DoNotDropServerRoles>
<DoNotDropServerRoleMembership>True</DoNotDropServerRoleMembership>
<DoNotDropServices>True</DoNotDropServices>
<DoNotDropServerTriggers>True</DoNotDropServerTriggers>
<DoNotDropSignatures>True</DoNotDropSignatures>
<DoNotDropStoredProcedures>True</DoNotDropStoredProcedures>
<DoNotDropSymmetricKeys>True</DoNotDropSymmetricKeys>
<DoNotDropSynonyms>False</DoNotDropSynonyms>
<DoNotDropTableValuedFunctions>True</DoNotDropTableValuedFunctions>
<DoNotDropUserDefinedDataTypes>True</DoNotDropUserDefinedDataTypes>
<DoNotDropUserDefinedTableTypes>True</DoNotDropUserDefinedTableTypes>
<DoNotDropUsers>True</DoNotDropUsers>
<DoNotDropViews>True</DoNotDropViews>
<ExcludeUsers>True</ExcludeUsers>
<ExcludeLogins>True</ExcludeLogins>
<ProfileVersionNumber>1</ProfileVersionNumber>
<ExcludeFullTextCatalogs>True</ExcludeFullTextCatalogs>
<IgnoreIndexOptions>True</IgnoreIndexOptions>
<DoNotDropXmlSchemaCollections>True</DoNotDropXmlSchemaCollections>
</PropertyGroup>
</Project>
1
seanw_pc

ドキュメントには、DropExtendedPropertiesNotInSourceのデフォルト値はtrueであると記載されています。

DropExtendedPropertiesNotInSource =(BOOLEAN 'True')
データベースにパブリッシュするときに、データベーススナップショット(.dacpac)ファイルに存在しない拡張プロパティをターゲットデータベースから削除するかどうかを指定します。

したがって、この問題を修正するには、これをFalseに設定する必要があります。

残念ながら、Visual StudioのSSDTユーザーインターフェイスは、私たちをあざ笑っているように見えます。おそらく、このような状況に陥ったのでしょう。

デフォルトでは、そのDropExtendedPropertiesNotInSourceはUIでTrueに設定されています(これはドキュメントと一致しています-良い????):

Screenshot of SSDT advanced publish settings showing "Drop Extended Properties Not In Source" is checked

「ターゲットにオブジェクトをドロップし、ソースにはドロップしない」オプションをオンにすると、その下部のセクションが無効になり、「オプトアウト」チェックボックスのリストが有効になります。

Screenshot of SSDT advanced publish settings showing "Drop objects in target but not in source" is checked, and the "drop extended properties not in source" option has been disabled

これらのオプションがfalseに設定されているようにfeelになる可能性がありますが、そうではありません-悪い????

手動でチェックを外す必要があります(まず、[ターゲットにオブジェクトをドロップし、ソースにはドロップしない]をオフにしてから、下部にあるオプションをオフにしてから、[ターゲットにオブジェクトをドロップ...]を再度オンにします)。

Screenshot of SSDT advanced publish settings showing correctly checked and unchecked options

UIを使用していない場合、パブリッシュXMLファイルに追加する必要がある要素は次のとおりです。

<DropExtendedPropertiesNotInSource>False</DropExtendedPropertiesNotInSource>
<DropConstraintsNotInSource>False</DropConstraintsNotInSource>
<DropDmlTriggersNotInSource>False</DropDmlTriggersNotInSource>
<DropIndexesNotInSource>False</DropIndexesNotInSource>

残念ながら、発生しているエラーを再現することはできませんが(Visual Studio 2019バージョン16.4.0およびSSDT 16.0.61911.11100でテストしています)、これらの明示的な「False」オプションを追加すると問題が修正されることを期待しています。

0
Josh Darnell