Mehr

Kann keine Verbindung zu einer fremden SQL Server-Tabelle von PosgreSQL mit OGR_FDW herstellen

Kann keine Verbindung zu einer fremden SQL Server-Tabelle von PosgreSQL mit OGR_FDW herstellen


Ich verwende Windows 7, mit PostgreSQL 9.3.6 installiert und PostGIS 2.1.5. Obwohl ich mir wünschte, ich könnte alles in PostgreSQL integrieren, kann und muss ich mich nicht mit einem anderen Server verbinden, auf dem SQL Server ausgeführt wird. Ich brauche dafür einen fremden Datenwrapper und habe ogr_fdw wie hier beschrieben installiert. Ich versuche, eine nicht-räumliche Tabelle im fremden SQL-Server mit meinem PostgreSQL zu verbinden und diese fremde Tabelle dann mit einer räumlichen PostgreSQL-Tabelle zu verbinden.

Aus den Anweisungen ist mir nicht klar, wie man die Parameter richtig einrichtet, um die Verbindung herzustellen (vorausgesetzt, es ist überhaupt möglich, es zum Laufen zu bringen), und ich verstehe nicht, wie das Dienstprogramm ogr_fdw_info verwendet wird. Ich habe zum Beispiel versucht:

ogr_fdw_info -s dbname="Datenbankname" host="Servername" user="SQL-Serverbenutzername"

aber das bringt mich nicht weiter. Weiß jemand, wie man mit dieser ogr_fdw-Bibliothek eine Verbindung zu einer fremden SQL-Server-Tabelle herstellt?


Mit Pauls Vorschlag habe ich versucht, ogrinfo wie folgt zu verwenden:

ogrinfo "MSSQL:server=ServerName;database=Datenbankname;UID=SQLServerUserName;PWD=SQLServerUserNamePassword"

Als ich das probiert habe, habe ich zumindest

Fehler beim Initialisieren der Metadatentabellen: [Microsoft][ODBC Server Driver][SQL Server]CREATE TABLE-Berechtigung in Datenbank 'DatabaseName' verweigert.

Für mich bedeutet das zumindest, dass ich mich irgendwie verbinde, aber nicht vollständig. Der SQL Server-Administrator hat mir einen Benutzernamen mit nur Leserechten gegeben, und das scheint logisch, da ich nur eine nicht-räumliche Tabelle lesen und als fremde Tabelle in meiner PostgreSQL-Datenbank auf meinem eigenen Computer ablegen möchte. Ich muss sicherstellen, dass ich mit ogrinfo eine Verbindung herstellen kann, bevor ich anfangen kann zu verstehen, wie man ogr_fdw verwendet. Ich habe versucht, am Ende meiner ogrinfo-Anweisung "estimatedmetadata=true" hinzuzufügen, aber das hat keinen Unterschied gemacht. Ich verstehe nicht genau, warum der Fehler beim Erstellen einer Tabelle auftreten würde, da ich nur eine Verbindung herstellen und nicht erstellen möchte. Irgendwelche zusätzlichen Hinweise, um diese Verbindung zum Laufen zu bringen?


Mit Pauls Vorschlag habe ich meinem Windows-Rechner die Umgebungsvariable hinzugefügt:

MSSQLSPATIAL_USE_GEOMETRY_COLUMNS=Nein

und jetzt ist der Fehler weg. Dann stellte ich auch fest, dass ich eine zweite Umgebungsvariable hinzufügen musste:

MSSQLSPATIAL_LIST_ALL_TABLES=YES

Dadurch konnte ich mit OGRINFO eine korrekte Verbindung zum SQL-Server herstellen und die nicht-räumlichen Tabellen anzeigen. Wenn ich es jetzt versuche:

ogr_fdw_info -s "MSSQL:server=ServerName;database=DatabaseName;UID=SQLServerUserName;PWD=SQLServerUserNamePassword"

Es heißt, es kann keine Verbindung zu dieser Datenquelle hergestellt werden. Ich bin verwirrt, da die Verbindungszeichenfolge mit OGRINFO gut funktioniert, aber nicht mit OGR_FDW_INFO.


Die Hauptsache ist, eine korrekte Verbindungszeichenfolge zu erhalten, also tun Sie das Richtige, wenn Sie mit ogr_fdw_info spielen, bis eine Verbindung funktioniert.

"MSSQL:server=localhostSQL2012Express;database=ProSpatial;trusted_connection=yes;"

Hier ist eine OGR-Verbindungszeichenfolge, die ich online gefunden habe, und hier bei GIS.SE gibt es eine weitere, Shapefile zu MSSQL mit ogr2ogr kann keine Verbindung herstellen

Sie können mit ogrinfo auch unabhängig testen, um herauszufinden, was eine gute Verbindungszeichenfolge ist. Sobald Sie dies getan haben, sollten Sie in der Lage sein, den Rest des Prozesses in FDW durchzuarbeiten.


Jan,

Nicht sicher, wann Sie diese Binärdatei heruntergeladen haben. Beim ersten Packen habe ich beim 9.3-Build einen Fehler gemacht und den ODBC-Treiber weggelassen, der für die MSSQL-Verbindung benötigt wird. Jemand hat mich benachrichtigt, als er versucht hat, eine Verbindung zu MS Access herzustellen, und ich habe das Problem seitdem behoben.

Auch wenn Sie PostGIS seitdem aktualisiert haben, hat es möglicherweise den libgdal-Treiber überschrieben und der mit PostGIS gelieferte Treiber enthält (noch) keine ODBC-Unterstützung. In 2.2 plane ich, ODBC-Unterstützung einzubauen.

Danke, Regina


Schau das Video: Novacura FLOW on SQL Server - Part 1