Mehr

Was ist, wenn 'geometry_columns' bereits in der MSSQL Server-Datenbank vorhanden ist?

Was ist, wenn 'geometry_columns' bereits in der MSSQL Server-Datenbank vorhanden ist?


Beim Versuch, eine .SHP mit OGR2OGR in MSSQLSpatial zu laden, erhalte ich die folgende Fehlermeldung:

FEHLER 1: Fehler beim Initialisieren der Metadatentabellen: [Microsoft][ODBC SQL Server Dr iver][SQL Server]In der Datenbank ist bereits ein Objekt namens 'geometry_columns' vorhanden.

Ich kann die Einträge mit dieser Abfrage sehen:

SELECT * FROM giswork.INFORMATION_SCHEMA.COLUMNS wobei Tabellenname wie 'geometry%'

Und das Ergebnis sieht so aus:

Und wenn ich mit dieser Abfrage tiefer grabe:

Wählen Sie * aus matthew_baker.geometry_columns

Ich erhalte eine Reihe von leeren Ergebnissen:

Meine Fragen:

  • Was sollte in der Tabelle "geometry_columns" stehen (wenn es nicht schon da ist ...)
  • Warum gibt og2ogr den Fehler aus, dass die Tabelle "geometry_columns" bereits erstellt wurde?

BEARBEITEN: Es scheint, dass GDAL erstellt diese Tabellen, als ich versuchte, den OGR2OGR-Befehl zu verwenden - sie waren bis jetzt nicht in meiner Datenbank. Meine aktuellen Geodaten wurden mit FME erstellt und werden mit FME aktualisiert.

Ich kann meine MSSQLSpatial-Tabellen in QGIS 2.10 ohne Probleme über mehrere Schemata in meiner Datenbank hinweg anzeigen UND bearbeiten.


Ich bin in letzter Zeit über dieses Problem gestolpert, und wenn Sie die Umgebungsvariable MSSQLSPATIAL_USE_GEOMETRY_COLUMNS auf NO setzen, verschwindet die Fehlermeldung. Verwandte Dokumentation hier.

Hoffe es hilft später jemandem.


Ich habe eine teilweise Antwort auf Teil 2 Ihrer Frage "Warum löst ogr2ogr den Fehler aus, dass die Tabelle "geometrie_columns" bereits erstellt wird?"

Ich führe eine .SHP in MSSQLSpatial mit OGR2OGR aus und erhalte auch die

FEHLER 1: Fehler beim Initialisieren der Metadatentabellen: [Microsoft][ODBC SQL Server Dr iver][SQL Server]In der Datenbank ist bereits ein Objekt namens 'geometry_columns' vorhanden.

Die MSSQL-Datenbank, in die ich lade, enthält auch SDE. Es gibt keine Tabelle namens "geometry_columns", aber eine Tabelle namens "sde_geometry_colums" und eine gespeicherte Prozedur namens "geometrie_columns". Ich vermute, dass ogr2ogr überprüft, ob eine Tabelle mit dem Namen Geometrie_Spalten existiert und wenn nicht, erstellt sie sie. Es wird also nicht die Tabelle "geometrie_columns" gefunden und dann versucht, die Tabelle "geometrie_columns" zu erstellen. Da es ein Objekt (die gespeicherte Prozedur) mit dem Namen Geometrie_Spalten gibt, wird ein Fehler ausgegeben, wenn ogr2ogr versucht, eine Tabelle mit demselben Namen zu erstellen. Ich habe dies getestet, indem ich den gespeicherten Proc umbenannt und ogr2ogr erneut ausgeführt habe, und ich erhalte den Fehler nicht mehr. Ich führe all dies in einer Testdatenbank durch und weiß nicht, welche Auswirkungen das Umbenennen dieses gespeicherten Proc…


Wenn Sie keine Umgebungsvariablen verwenden möchten (oder keine Berechtigungen haben), fügen Sie hinzu--config MSSQLSPATIAL_USE_GEOMETRY_COLUMNS NEINzum Befehl hat dieses Problem für mich gelöst.