<\/HEAD>
このエラー: 選択されたフィールドは必須フィールドであり、削除できません を経験したことはありますか?「Field IsRequired」をどうやってチェックしたのか頭をひねっています。公式の解決策は、フィーチャクラスを別のフィーチャクラスにエクスポートしてフィールドマッピングの魔法を使い、元のものを削除して変更したものをインポートする……ですが、それは違います。私のすべてのフィーチャクラスは、あらゆる依存関係やリレーションシップが組み込まれたエンタープライズジオデータベースに組み込まれているので(それがエンタープライズジオデータベースのポイントですよね?) <\/P>
<\/P>
この問題を解決するもっと速く簡単な方法があります。私はメタデータをネイティブXMLで編集することに多くの時間を費やしています(より速く、自動化もしやすいので)、ではなぜXMLでもあるフィーチャクラス定義を編集しないのでしょうか?フィーチャクラス定義はGDB_ITEMSテーブルのXMLカラム(Definition)に存在します。 <\/P>
<\/P>
<\/P>
Definitionカラムのxmlをクリックすると、フィーチャクラスの生スキーマが表示されます。削除できないとされる属性名を探してください: <\/P>
<<\/SPAN>GPFieldInfoEx<\/SPAN> xsi:<\/SPAN>type<\/SPAN>=<\/SPAN>"<\/SPAN>typens:GPFieldInfoEx"<\/SPAN><\/SPAN>><\/SPAN><\/SPAN>
<<\/SPAN>Name<\/SPAN>><\/SPAN><\/SPAN>GIS_LOCATION_ID<\/<\/span>Name<\/span>><\/span><\/span>
<<\/span>ModelName<\/span>><\/span><\/span>GIS_LOCATION_ID<\/<\/span>ModelName<\/span>><\/span><\/span>
<<\/span>FieldType<\/span>><\/span><\/span>esriFieldTypeGUID<\/<\/span>FieldType<\/span>><\/span><\/span>
<<\/span>IsNullable<\/span>><\/span><\/span>false<\/<\/span>IsNullable<\/span>><\/span><\/span>
<<\/span>Required<\/span>><\/span><\/span>true<\/<\/span>Required<\/span>><\/span><\/span>
≪\/Editable≫False≪\/Editable≫<\/<Span >Code<\/<Span >Pre
Requiredタグに注目してください。問題の原因がわかったので、次は修正方法です。SQLでXMLを更新するのは、文字列全体を置き換える場合はかなり簡単です。特定のノードや要素だけを更新するのは少し難しいですが可能です。以下のコードでは、xml定義の前に=N'があることに注意してください。他の多くのxmlは省略しましたが、私が行ったのはXML定義全体をコピーして=N'の後に貼り付けたことです。最後には'があります。また、WHERE [Name] = 'WETLANDS.DBO.GRSM_HYDRO_WETLAND_PT' は、その削除できない属性がある特定のフィーチャクラスだけに更新を制限しています。<\/<p>
UPDATE [dbo].[GDB_ITEMS]
SET [Definition] =N'≪DEFeatureClassInfo SPan Class= "Attr-Name Token" >xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:typens="http://www.esri.com/schemas/ArcGIS/10.5" xsi:type="typens:DEFeatureClassInfo">
≪CatalogPath>\\WETLANDS.DBO.GRSM_HYDRO_WETLAND_PT≪\/CatalogPath>
≪Name>WETLANDS.DBO.GRSM_HYDRO_WETLAND_PT≪\/Name>
< ;ChildrenExpanded > ; </ SpAN >< ; / ChildrenExpanded > ; </ SpAN >
false
< ;DatasetType > ; </ spAN >< ; / DatasetType > ; </ spAN >
esriDTFeatureClass
< ;DSID > ; </ spAN >< ; / DSID > ; </ spAN >
435
< ;Versioned > ; </ spAN >< ; / Versioned > ; </ spAN >
false
< ;CanVersion > ; </ spAN >< ; / CanVersion > ; </ spAN >
true
< ;ConfigurationKeyword / > ; </ spAN >
< ;RequiredGeodatabaseClientVersion > ; </ spAN >< ; / RequiredGeodatabaseClientVersion > ; </ spAN >
10.2
< ;HasOID > ; </ spAN >< ; / HasOID > ; </ spAN
class="token tag"><<\/SPAN>OIDFieldName<\/SPAN>><\/SPAN><\/SPAN>OBJECTID<\/<\/SPAN>OIDFieldName<\/SPAN>><\/SPAN><\/SPAN>\n\n\nblah blah blah\n\n <<\/SPAN>GPFieldInfoEx<\/SPAN> xsi:<\/SPAN>type<\/SPAN>=<\/SPAN>"<\/SPAN>typens:GPFieldInfoEx"<\/SPAN><\/SPAN>><\/SPAN><\/SPAN>\n <<\/SPAN>Name<\/SPAN>><\/SPAN><\/SPAN>GIS_LOCATION_ID<\/<\/SPAN>Name<\/SPAN>><\/SPAN><\/SPAN>\n <<\/SPAN>ModelName<\/SPAN>><\/SPAN><\/SPAN>GIS_LOCATION_ID<\/<\/Span>ModelName<\/span>><\/span><\/span>\n <\/FieldTypeesriFieldTypeGUID<\/FieldType\n <\/IsNullabletrue<\/IsNullable\n <\/GPFieldInfoEx\n\nblah blah blah\n\n <\/ChangeTrackedtrue<\/ChangeTracked\n <\/FieldFilteringEnabledfalse<\/FieldFilteringEnabled\n < spanclass= "tokentag" >< spanclass= "tokentag" >< spanclass= "punctuationtokentoken" ></FilteredFieldNames></ span ></ span ></ span > \n< spanclass= "tokentag" >< spanclass= "punctuationtokentoken" ></DEFeatureClassInfo></ span ></ span ></ span >'\nWHERE [Name] = 'WETLANDS.DBO.GRSM_HYDRO_WETLAND_PT'< spanclass= "line-numbers-rows" >< span >< / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span >< span > < / span > << EM O J I _ 2 7 > > </ s p a n > < s p a n > << E M O J I _ 2 8 > > </ s p a n > < s p a n > << E M O J I _ 2 9 > > </ s p a n > < s p a n > << E M O J I _ 3 0 > > </ s p a n > </ s p a n > </ C O D E > </ P R E > < P > 中間のどこかで、属性制限を他の属性と同じように削除できるものに変更したのがわかります。 </ P > < P > </ P > < P > Arc Catalog を閉じて再起動し、変更を確認して属性を削除してください。これを行う前に SQL の完全なバックアップを取得し、まず本番環境以外のデータベースでテストすることは言うまでもありません。また、これは GlobalID フィールド(例えば GlobalID と名前が付けられていない GLobalID 属性がある場合)では機能しません。その場合はさらにいくつかの変更が必要であり、この方法をテーブルスキーマの物理設計を変更する手段として見なすべきではありません。 </ P > < P > </ P > < P > < STRONG > < EM >免責事項: この方法で基盤となる GDB テーブルを編集することは ESRI によってサポートされていません。 </ EM > </ STRONG >...これを踏まえた上で、XML 定義の操作によって多くの DB 管理作業が可能です。私はこれを使って「workspace」をエクスポートし、XML を編集して検索と置換の変更を実装し、新しい GDB としてインポートすることに成功しています。 </ P ></ BODY ></ HTML>