Impossible d'ouvrir ArcCatalog Database Connection Tables de base de données SQL avec des noms de champ supérieurs à 31 caractères

8

J'utilise SQLEXPRESS comme environnement de test.

J'ai une connexion de base de données dans ArcCatalog à une base de données SQL. Certaines tables de la base de données SQL ont des noms de champ supérieurs à 31 caractères et ces tables ne s'ouvriront pas dans ArcCatalog.

Les noms de champ SQL de plus de 31 caractères peuvent-ils recevoir des alias à l'aide de Server Management Studio, puis se reconnecter à ArcCatalog ou les noms de champ dans la base de données SQL doivent-ils simplement être raccourcis (ce qui sera difficile car il appartient à un tiers) )?

user22816
la source

Réponses:

4

La limite de 31 caractères est un artefact de la prise en charge multi-RDBMS dans ArcSDE (Oracle limite les noms de table et de colonne à 30 caractères).

Voici certaines des limites de tampon de transfert pertinentes du fichier include 10.2.0:

#define SE_MAX_COLUMN_LEN          32  /* MAXIMUM COLUMN NAME LENGTH */
#define SE_MAX_TABLE_LEN           160 /* MAXIMUM TABLE NAME LENGTH */
#define SE_MAX_SCHEMA_TABLE_LEN    30  /* MAXIMUN TABLE 'ONLY' NAME LENGTH */
#define SE_MAX_ALIAS_LEN           32  /* MAXIMUM TABLE ALIAS LENGTH */
#define SE_MAX_ENTITY_LEN          256 /* MAXIMUM ENTITY TYPE LENGTH */
#define SE_MAX_HINT_LEN            1024/* MAXIMUM DBMS HINT LENGTH */
#define SE_MAX_SCHEMA_LEN          32  /* MAXIMUN SCHEMA NAME LENGTH */
#define SE_MAX_OWNER_LEN           32  /* MAXIMUM TABLE OWNER NAME LENGTH */
#define SE_MAX_INDEX_LEN           160 /* MAXIMUM INDEX NAME LENGTH */
#define SE_MAX_GROUP_LEN           128 /* MAXIMUM GROUP NAME LENGTH */

Ce sont des tailles de tampon, qui incluent un terminateur, de sorte que les limites de caractères réelles sont de moins.

J'ai bien peur que vous ayez besoin de changer vos tables.

Vince
la source
2

L'option la plus simple consiste à créer une vue de la table et à y accéder via ArcCatalog. Si vous ne les connaissez pas, une vue est une représentation de tables définie avec une instruction SQL. Dans votre instruction SQL, vous pouvez modifier le nom des champs comme suit:

SELECT ReallyReallyReallyLongFieldName AS FieldOne FROM Table1

L'utilisation de Views présente de nombreux autres avantages, notamment une meilleure sécurité car vous ne donnez pas aux utilisateurs un accès direct aux tables sous-jacentes.

Une autre chose que vous voudrez peut-être reconsidérer est de revoir la conception de votre base de données. Dans la plupart des cas, vous ne devriez probablement pas utiliser des noms de champ aussi longs.

dblanchett
la source