Suite

Que faire si 'geometry_columns' existe déjà dans la base de données MSSQL Server ?


Lorsque j'essaie de charger un .SHP dans MSSQLSpatial à l'aide d'OGR2OGR, j'obtiens l'erreur suivante :

ERREUR 1 : Erreur lors de l'initialisation des tables de métadonnées : [Microsoft][ODBC SQL Server Driver][SQL Server]Il y a déjà un objet nommé 'geometry_columns' dans la base de données.

Je peux voir les entrées en utilisant cette requête :

SELECT * FROM giswork.INFORMATION_SCHEMA.COLUMNS où table_name comme 'geometry%'

Et le résultat ressemble à ceci :

Et si je creuse plus profondément avec cette requête :

sélectionnez * à partir de matthew_baker.geometry_columns

J'obtiens un ensemble de résultats vides :

Mes questions:

  • Ce qui devrait être dans la table geometry_columns (si ce n'est pas déjà là… )
  • Pourquoi og2ogr renvoie-t-il l'erreur concernant la table geometry_columns déjà en cours de création ?

ÉDITER: Il semble que GDAL établi ces tables lorsque j'ai essayé d'utiliser la commande OGR2OGR - elles n'étaient pas dans ma base de données jusqu'à présent. Mes données spatiales actuelles ont été créées à l'aide de FME et sont mises à jour avec FME.

Je peux afficher ET modifier mes tables MSSQLSpatial dans QGIS 2.10 sans aucun problème, sur plusieurs schémas de ma base de données.


Je suis tombé sur ce problème récemment et si vous définissez la variable d'environnement MSSQLSPATIAL_USE_GEOMETRY_COLUMNS sur NON, le message d'erreur disparaît. Documentation associée ici.

J'espère que ça aidera quelqu'un plus tard.


J'ai une réponse partielle à la partie 2 de votre question « Pourquoi ogr2ogr renvoie-t-il l'erreur concernant la table geometry_columns déjà créée ? »

J'exécute un .SHP dans MSSQLSpatial en utilisant OGR2OGR et j'obtiens également le

ERREUR 1 : Erreur lors de l'initialisation des tables de métadonnées : [Microsoft][ODBC SQL Server Driver][SQL Server]Il y a déjà un objet nommé 'geometry_columns' dans la base de données.

La base de données MSSQL dans laquelle je charge contient également SDE. Il n'y a pas de table appelée geometry_columns mais il existe une table appelée sde_geometry_colums et un nom de procédure stockée geometry_columns. Je suppose que ogr2ogr vérifie si une table appelée geometry_columns existe et si ce n'est pas le cas, la crée. Il ne s'agit donc pas de trouver la table geometry_columns, puis d'essayer de créer la table geometry_columns. Comme il existe un objet (le proc stocké) appelé geometry_columns, une erreur sera renvoyée lorsque ogr2ogr essaiera de créer une table du même nom. J'ai testé cela en renommant le proc stocké et en réexécutant ogr2ogr et je n'obtiens plus l'erreur. J'effectue tout cela sur une base de données de test et je ne sais pas quelles sont les implications pour SDE en renommant ce proc stocké…


Si vous ne souhaitez pas utiliser de variables d'environnement (ou n'avez pas d'autorisations), ajoutez--config MSSQLSPATIAL_USE_GEOMETRY_COLUMNS NONà la commande a résolu ce problème pour moi.


Voir la vidéo: Unicodes. symbols for websites (Octobre 2021).