Select to view content in your preferred language

Does ArcGIS Enterprise still impose a limit of 16 characters for attribute index names?

472
7
06-24-2025 09:09 AM
BillFox
MVP Notable Contributor

This esri document shows field names and index names limit is 128 (SQL Server)

Enterprise geodatabase size and name limits

https://pro.arcgis.com/en/pro-app/latest/help/data/geodatabases/manage-sql-server/enterprise-geodata...

But this esri document shows "ArcGIS imposes a limit of 16 characters for attribute index names."

Attribute indexes in the geodatabase

https://pro.arcgis.com/en/pro-app/latest/help/data/geodatabases/overview/attribute-indexes-in-the-ge...

if the limit is 16, this must be a BUG? ArcGIS Enterprise 11.and ArcGIS Pro 3.3/3.4/3.5 should be allowed to create (and maintain) field names and attribute index names up to 128

ArcGIS Pro should not truncate the name down to 16

We should not have to use the SQL Server database tools to create and maintain the attribute index so we can go up to the 128 characters (esri warns about fooling with the enterprise geodatabase directly using SQL Server tools without Enterprise/ArcGIS Pro tools and probably would not /support that)

Any additional details about doing this with traditional versioning, core tables, adds table, delete table, history table, etc.?

This cannot be "as designed" because the 128 change in ArcGIS for filed names has to be the same behavior to create indexes with names up to the limit of the underlying DBMS (128)

Reminds me of the old Arc/Info Coverage limitations shown in this Library of Congress Collection

https://www.loc.gov/preservation/digital/formats/fdd/fdd000284.shtml

Naming restrictions: There are some limitations on the names that can be used by coverages. The following are some limitations on the coverage names:

  • Cannot be longer than 13 characters
  • Cannot contain spaces
  • Cannot start with a number
  • Does not have an extension
  • Must be in all lowercase letters

And the old ArcGIS 10 Resource Center for Fields in coverage attribute tables

https://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00140000000q000000.htm

INFO uses the following conventions to define the format of each item (field) in a data file:

Item formatDescription

Item name

Any name with up to 16 alphanumeric characters

Item width

Number of spaces (or bytes) used to store item values

Output width

Number of spaces (or bytes) used to display item values

Item type

The data type of the item

Number of decimals

The number of digits to the right of the decimal place for item types that hold decimal numbers

Item format definitions
 

 

0 Kudos
7 Replies
BillFox
MVP Notable Contributor
0 Kudos
BillFox
MVP Notable Contributor
Esri Support AI Chatbot
 
 

Hello! I'm the Esri Support AI Chatbot, a digital assistant designed to help you troubleshoot ArcGIS issues and answer any technical questions you might have. For more details about what I can do, please select the question mark icon at the top of our chat.

How can I help you today?

Does ArcGIS Enterprise still impose a limit of 16 characters for attribute index names?
 

Yes, ArcGIS Enterprise continues to impose a limit of 16 characters for attribute index names. This restriction is designed to ensure compatibility across supported databases and facilitate seamless data sharing between different geodatabases.

 
0 Kudos
BillFox
MVP Notable Contributor
which databases require that limit?
 

The 16-character limit for attribute index names in ArcGIS is imposed to ensure compatibility across all supported databases and facilitate data sharing between geodatabases. Specifically:

  • Oracle Spatial has a stricter limitation, allowing up to 18 characters for spatial index names, with two characters reserved for appending "_A."
  • SQL Server and SQLite allow longer index names (up to 128 characters), but ArcGIS enforces the 16-character limit to maintain consistency across geodatabases.

This restriction is based on the smallest allowable length within supported databases.

0 Kudos
BillFox
MVP Notable Contributor
what is oracle spatial
 

Oracle Spatial is an optional feature of the Oracle Database Enterprise Edition that provides advanced geospatial capabilities. It is designed to store and manage spatial data, such as geographic features represented by points, lines, and polygons. Oracle Spatial supports the SDO_Geometry type, which is implemented using Oracle's extensible object-relational type system.

Key features of Oracle Spatial include:

  1. Geodetic Data Support: It supports geodetic coordinates (latitude and longitude) for measuring the Earth's surface.
  2. SQL Access: Provides ISO and OGC-compliant SQL access to spatial data.
  3. Efficient Storage: Designed to efficiently use database resources and support features like replication and partitioning.
  4. Compatibility: Works with ArcGIS to manage feature and raster datasets in enterprise geodatabases or Oracle databases.

Oracle Locator is a subset of Oracle Spatial capabilities and is included as a standard feature in Oracle Database Standard and Enterprise editions.

0 Kudos
BillFox
MVP Notable Contributor

Index name

16 if created in ArcGIS. ArcGIS can read up to the database limit for indexes created outside ArcGIS.

https://pro.arcgis.com/en/pro-app/latest/help/data/geodatabases/manage-oracle/enterprise-geodatabase...

 

0 Kudos
BillFox
MVP Notable Contributor
Index name 16 if created in ArcGIS. ArcGIS can read up to the database limit for indexes created outside ArcGIS.
 

ArcGIS imposes a limit of 16 characters for index names created within ArcGIS in most databases. However, for SQL Server and SQLite, index names can be up to 128 characters. If the index is created outside ArcGIS, ArcGIS can read up to the database's maximum limit for index names.

Additionally:

  • Index names must start with a letter and cannot contain spaces or reserved database keywords.
  • ArcGIS does not support object names requiring delimiters (e.g., double quotation marks).

If you need further details about specific databases or scenarios, feel free to ask!

0 Kudos
BillFox
MVP Notable Contributor

https://docs.oracle.com/en/database/oracle/oracle-database/23/odpnt/EFCoreIdentifier.html

Identifier Name Length and Uniqueness

 

Oracle Database limit identifier names, such as table names, column names, and primary key names, to 128 bytes. Oracle Entity Framework Core will automatically truncate identifier names that are too long to this specified length, except for table names. This prevents both the user and Entity Framework Core from creating identifiers beyond the maximum character limit of the Oracle Database and receiving an "ORA-00972: IDENTIFIER IS TOO LONG" error” in most instances.

If the identifiers use multi-byte characters, the maximum identifier length may require a setting with character expansion ratio in mind to assure that all identifiers can be created in the Oracle database. For example, if the Oracle database character set is UTF8, a single character may require up to 4 bytes. Thus, to guarantee that all identifiers can be created in an Oracle database that does not support long identifiers, the RelationalAnnotationNames MaxIdentifierLength field can be set to 32 bytes (i.e. 128 bytes divided by 4). By default, Oracle EF Core MaxIdentifierLength has a value of 128.

Even if your EF Core model does not use identifier names longer than what your database version supports, you should consider setting MaxIdentifierLength to a lower value. ODP.NET and Entity Framework Core auto-generate schema object names from models. They may, on occasion, append additional characters to the names, which could exceed the maximum number of characters the database permits. By setting the MaxIdentifierLength, you prevent EF Core from causing the ORA-00972 error inadvertently.

0 Kudos