أكثر

لا يمكن الاتصال بجدول SQL Server الأجنبي من PosgreSQL باستخدام OGR_FDW

لا يمكن الاتصال بجدول SQL Server الأجنبي من PosgreSQL باستخدام OGR_FDW


أنا أستخدم Windows 7 ، مع تثبيت PostgreSQL 9.3.6 و PostGIS 2.1.5. بينما أتمنى أن أحصل على كل شيء في PostgreSQL ، لا يمكنني وأحتاج إلى الاتصال بخادم آخر يقوم بتشغيل SQL Server. أحتاج إلى استخدام غلاف بيانات أجنبية لهذا ، وقد قمت بتثبيت ogr_fdw كما هو موضح هنا. أحاول توصيل جدول غير مكاني في SQL Server الأجنبي بـ PostgreSQL الخاص بي ، وسأقوم بعد ذلك بضم هذا الجدول الخارجي إلى جدول مكاني PostgreSQL.

من التعليمات ، لا أعرف كيفية إعداد المعلمات بشكل صحيح لإجراء الاتصال (على افتراض أنه من الممكن تشغيله) ، ولا أفهم كيفية استخدام الأداة المساعدة ogr_fdw_info. على سبيل المثال ، حاولت:

ogr_fdw_info -s dbname = "databasename" host = "servername" user = "SQL-serverusername"

لكن هذا لا يوصلني إلى أي مكان. هل يعرف أي شخص كيفية الاتصال بجدول خادم SQL خارجي باستخدام مكتبة ogr_fdw هذه؟


باقتراح بول ، حاولت استخدام ogrinfo مثل هذا:

ogrinfo "MSSQL: الخادم = ServerName ؛ قاعدة البيانات = اسم قاعدة البيانات ؛ UID = SQLServerUserName ؛ PWD = SQLServerUserNamePassword"

عندما حاولت ذلك ، حصلت على الأقل

خطأ في تهيئة جداول بيانات التعريف: [Microsoft] [برنامج تشغيل خادم ODBC] [SQL Server] تم رفض إذن إنشاء جدول في قاعدة البيانات 'DatabaseName'.

بالنسبة لي ، هذا يعني على الأقل أنني متصل نوعًا ما ، لكن ليس تمامًا. أعطاني مسؤول خادم SQL اسم مستخدم له حقوق قراءة فقط ، وهذا يبدو منطقيًا لأنني أريد فقط قراءة جدول واحد غير مكاني ووضعه كجدول خارجي داخل قاعدة بيانات PostgreSQL الخاصة بي على جهازي الخاص. يجب أن أتأكد من أنه يمكنني الاتصال باستخدام ogrinfo قبل أن أتمكن من البدء في فهم كيفية استخدام ogr_fdw. حاولت إضافة "estimatedmetadata = true" في نهاية بيان ogrinfo الخاص بي ، لكن ذلك لم يحدث فرقًا. لا أفهم بالضبط سبب حدوث الخطأ في إنشاء جدول ، لأنني أرغب فقط في الاتصال ، وليس الإنشاء. هل هناك أي تلميحات إضافية حول تشغيل هذا الاتصال؟


باقتراح بول ، أضفت متغير البيئة إلى جهاز Windows الخاص بي:

MSSQLSPATIAL_USE_GEOMETRY_COLUMNS = لا

والآن اختفى الخطأ. ثم وجدت أيضًا أنني بحاجة إلى إضافة متغير بيئة ثانٍ:

MSSQLSPATIAL_LIST_ALL_TABLES = نعم

مكنني هذا من الاتصال بشكل صحيح بخادم SQL باستخدام OGRINFO ومشاهدة الجداول غير المكانية. الآن ، عندما أحاول:

ogr_fdw_info -s "MSSQL: server = ServerName ؛ قاعدة البيانات = اسم قاعدة البيانات ؛ UID = SQLServerUserName ؛ PWD = SQLServerUserNamePassword"

تقول أنه لا يمكن الاتصال بمصدر البيانات هذا. أشعر بالحيرة لأن سلسلة الاتصال تعمل بشكل جيد مع OGRINFO ، ولكن ليس OGR_FDW_INFO.


الشيء الرئيسي هو الحصول على سلسلة اتصال صحيحة ، لذا فأنت تفعل الشيء الصحيح عند تشغيل w / ogr_fdw_info حتى تحصل على اتصال يعمل.

"MSSQL: server = localhost  SQL2012Express ؛ قاعدة البيانات = ProSpatial ؛ Trusted_connection = نعم ؛"

إليك سلسلة اتصال OGR وجدتها عبر الإنترنت ، وهناك سلسلة أخرى هنا في GIS.SE ، Shapefile to MSSQL مع فشل ogr2ogr في إجراء الاتصال

يمكنك أيضًا الاختبار بشكل مستقل باستخدام ogrinfo لمعرفة ماهية سلسلة الاتصال الجيدة. بمجرد القيام بذلك ، يجب أن تكون قادرًا على العمل خلال بقية العملية في FDW.


يناير ،

لست متأكدًا عند تنزيل هذا الملف الثنائي. في الحزمة الأولى ، ارتكبت خطأً في الإصدار 9.3 وتركت برنامج تشغيل ODBC المطلوب لاتصال MSSQL. نبهني شخص ما عندما حاول الاتصال بـ MS Access ومنذ ذلك الحين قمت بإصلاح المشكلة.

أيضًا إذا قمت بالترقية إلى PostGIS منذ ذلك الحين ، فربما يكون قد استبدل برنامج التشغيل libgdal والآخر الذي يأتي مع PostGIS لا يتضمن (حتى الآن على أي حال) دعم ODBC. في 2.2 أخطط لبناء دعم ODBC بتنسيق.

شكرا ريجينا


شاهد الفيديو: How to Install and Setup PostgreSQL on Windows 10