Už jste někdy dostali tuto Chybu: Vybrané pole je povinné a nelze jej smazat<\/A> ? Škrábu se na hlavě a přemýšlím, jak jsem zkontroloval "Field IsRequired". Oficiální řešení je exportovat feature class do jiné feature class a udělat nějakou magii mapování polí, pak smazat originál, importovat změněný......ne. Víte, všechny mé feature classes jsou zabudovány v enterprise geodatabázi se všemožnými závislostmi a vztahy (to je vlastně pointa enterprise geodatabáze, že?). <\/P><\/P>Existuje rychlejší a jednodušší způsob, jak tento problém vyřešit. Strávím hodně času úpravou metadat v jejich nativním XML (rychlejší a mohu věci snadněji automatizovat), tak proč needitovat definici feature class, která je také v XML? Definice feature class žijí ve sloupci XML (Definition) v tabulce GDB_ITEMS. <\/P><\/P><\/P>Klikněte na xml ve sloupci definition a uvidíte surové schéma pro feature class. Hledejte název atributu, který údajně nedovolí jeho smazání: <\/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>Name<\/<span><<\/<span>Name<\/<span><<\/<span>Name<\/<span><<\/<span>Name<\/<span><<\/<span>Name<\/<span><<\/<span>Name<\/<span><<\/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 <<\/span>FieldType<\/span>><\/span><\/span>esriFieldTypeGUID<\/<\/span>FieldType<\/span>><\/span><\/span>\n <<\/span>IsNullable<\/span>><\/span><\/span>true<\/<\/span>IsNullable<\/span>><\/span><\/span>\n <\/<\/span>GPFieldInfoEx<\/span>><\/span><\/span>\n\nblah blah blah\n\n <<\/span>ChangeTracked<\/span>><\/span><\/span>true<\/<\/span>ChangeTracked<\/span>><\/span><\/span>\n <<\/span>FieldFilteringEnabled<\/span>><\/span><\/span>false<\/<\/pan>FieldFilteringEnabled<\/pan> & gt ; < \/ span > < \/ span > \ n < span clasS= " toKen taG " > & lt ; FilteRedFieLdNames < \/ span > < span clasS= " attr-name toKen " > xsi : < \/ span > type < \/ span > < span clasS= " attr-value toKen " > = < \/ span > < span clasS= " punctuation toKen " > " < \/ span > typens : Names < span clasS= " punctuation toKen " > " < \/ span > < \/ span > < span clasS= " punctuation toKen " > / & gt ; < \/ span > < \/ span > \ n < span clasS= " toKen taG " > & lt ; \/ DEFeatureClassInfo < \/ span > & gt ; < \/ span > ' \ n WHERE [Name] = 'WETLANDS.DBO.GRSM_HYDRO_WETLAND_PT' </ SPAN > < SPAN > << EMOJI _25 >> </ SPAN > < SPAN > << EMOJI _26 >> </ SPAN > < SPAN > << EMOJI _27 >> </ SPAN > < SPAN > << EMOJI _28 >> </ SPAN > < SPAN > << EMOJI _29 >> </ SPAN > < SPAN > << EMOJI _30 >> </ SPAN > < \/ SPAN > < \/ CODE > < \/ PRE > < P > Uvidíte, někde uprostřed, že jsem změnil omezení atributu tak, aby byl jako každý jiný atribut: jeden, který mohu smazat. < \/ P > < P > < \/ P > < P > Zavřete a znovu spusťte Arc Catalog, abyste viděli změnu (a smazali atribut). Je samozřejmé, že byste měli před tímto krokem udělat úplnou zálohu vaší SQL databáze a nejprve to otestovat na neprodukční databázi! Také si všimněte, že toto nebude fungovat na poli GlobalID (například pokud máte atribut GLobalID, ale není pojmenován GlobalID), je potřeba provést ještě několik dalších změn pro úpravu tohoto pole a neměli byste tuto metodu považovat za způsob, jak měnit fyzický návrh schématu tabulky. < \/ P > < P > < \/ P > < P > < STRONG > < EM > Prohlášení: Úprava základních tabulek GDB tímto způsobem není podporována společností ESRI.< \/ EM > < \/ STRONG > ..s tímto vyjasněním existuje mnoho administrativních úkonů DB, které můžete provést manipulací s XML definicemi. Použil jsem to s velkým úspěchem při exportu „workspace“, úpravě XML pro implementaci některých změn najít a nahradit a poté import jako novou GDB. < \/ P > < \/ BODY > < \/ HTML >
<\/P>
Existuje rychlejší a jednodušší způsob, jak tento problém vyřešit. Strávím hodně času úpravou metadat v jejich nativním XML (rychlejší a mohu věci snadněji automatizovat), tak proč needitovat definici feature class, která je také v XML? Definice feature class žijí ve sloupci XML (Definition) v tabulce GDB_ITEMS. <\/P>
Klikněte na xml ve sloupci definition a uvidíte surové schéma pro feature class. Hledejte název atributu, který údajně nedovolí jeho smazání: <\/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>Name<\/<span><<\/<span>Name<\/<span><<\/<span>Name<\/<span><<\/<span>Name<\/<span><<\/<span>Name<\/<span><<\/<span>Name<\/<span><<\/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 <<\/span>FieldType<\/span>><\/span><\/span>esriFieldTypeGUID<\/<\/span>FieldType<\/span>><\/span><\/span>\n <<\/span>IsNullable<\/span>><\/span><\/span>true<\/<\/span>IsNullable<\/span>><\/span><\/span>\n <\/<\/span>GPFieldInfoEx<\/span>><\/span><\/span>\n\nblah blah blah\n\n <<\/span>ChangeTracked<\/span>><\/span><\/span>true<\/<\/span>ChangeTracked<\/span>><\/span><\/span>\n <<\/span>FieldFilteringEnabled<\/span>><\/span><\/span>false<\/<\/pan>FieldFilteringEnabled<\/pan> & gt ; < \/ span > < \/ span > \ n < span clasS= " toKen taG " > & lt ; FilteRedFieLdNames < \/ span > < span clasS= " attr-name toKen " > xsi : < \/ span > type < \/ span > < span clasS= " attr-value toKen " > = < \/ span > < span clasS= " punctuation toKen " > " < \/ span > typens : Names < span clasS= " punctuation toKen " > " < \/ span > < \/ span > < span clasS= " punctuation toKen " > / & gt ; < \/ span > < \/ span > \ n < span clasS= " toKen taG " > & lt ; \/ DEFeatureClassInfo < \/ span > & gt ; < \/ span > ' \ n WHERE [Name] = 'WETLANDS.DBO.GRSM_HYDRO_WETLAND_PT' </ SPAN > < SPAN > << EMOJI _25 >> </ SPAN > < SPAN > << EMOJI _26 >> </ SPAN > < SPAN > << EMOJI _27 >> </ SPAN > < SPAN > << EMOJI _28 >> </ SPAN > < SPAN > << EMOJI _29 >> </ SPAN > < SPAN > << EMOJI _30 >> </ SPAN > < \/ SPAN > < \/ CODE > < \/ PRE > < P > Uvidíte, někde uprostřed, že jsem změnil omezení atributu tak, aby byl jako každý jiný atribut: jeden, který mohu smazat. < \/ P > < P > < \/ P > < P > Zavřete a znovu spusťte Arc Catalog, abyste viděli změnu (a smazali atribut). Je samozřejmé, že byste měli před tímto krokem udělat úplnou zálohu vaší SQL databáze a nejprve to otestovat na neprodukční databázi! Také si všimněte, že toto nebude fungovat na poli GlobalID (například pokud máte atribut GLobalID, ale není pojmenován GlobalID), je potřeba provést ještě několik dalších změn pro úpravu tohoto pole a neměli byste tuto metodu považovat za způsob, jak měnit fyzický návrh schématu tabulky. < \/ P > < P > < \/ P > < P > < STRONG > < EM > Prohlášení: Úprava základních tabulek GDB tímto způsobem není podporována společností ESRI.< \/ EM > < \/ STRONG > ..s tímto vyjasněním existuje mnoho administrativních úkonů DB, které můžete provést manipulací s XML definicemi. Použil jsem to s velkým úspěchem při exportu „workspace“, úpravě XML pro implementaci některých změn najít a nahradit a poté import jako novou GDB. < \/ P > < \/ BODY > < \/ HTML >
A much quicker way to do this is
<SPAN class="keyword token">UPDATE</SPAN> <SPAN class="punctuation token">[</SPAN>WETLANDS<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">[</SPAN>dbo<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">[</SPAN>GDB_ITEMS<SPAN class="punctuation token">]</SPAN> <SPAN class="keyword token">SET</SPAN> <SPAN class="punctuation token">[</SPAN>Definition<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="keyword token">modify</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'delete (/DEFeatureClassInfo/GPFieldInfoExs/GPFieldInfoEx[Name="CREATEUSER"]/Required)[1] '</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">WHERE</SPAN> <SPAN class="punctuation token">[</SPAN>Name<SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> <SPAN class="string token">'WETLANDS.DBO.GRSM_HYDRO_SEEPS'</SPAN> <SPAN class="keyword token">UPDATE</SPAN> <SPAN class="punctuation token">[</SPAN>WETLANDS<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">[</SPAN>dbo<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="punctuation token">[</SPAN>GDB_ITEMS<SPAN class="punctuation token">]</SPAN> <SPAN class="keyword token">SET</SPAN> <SPAN class="punctuation token">[</SPAN>Definition<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">.</SPAN><SPAN class="keyword token">modify</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'delete (/DEFeatureClassInfo/GPFieldInfoExs/GPFieldInfoEx[Name="EDITUSER"]/Required)[1] '</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">WHERE</SPAN> <SPAN class="punctuation token">[</SPAN>Name<SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> <SPAN class="string token">'WETLANDS.DBO.GRSM_HYDRO_SEEPS'</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
Přihlášení členové mohou přispívat, sledovat aktualizace a další. Nový zde? Zaregistrujte si bezplatný účet.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.