Daha çox

OGR_FDW istifadə edərək PosgreSQL-dən xarici SQL Server cədvəlinə qoşula bilmir


PostgreSQL 9.3.6 quraşdırılmış və PostGIS 2.1.5 ilə Windows 7 istifadə edirəm. PostgreSQL-də hər şeyi əldə edə bilsəm də, SQL Server işləyən başqa bir serverə qoşulmağı bacarmıram və ehtiyacım yoxdur. Bunun üçün xarici bir məlumat qablaşdırıcısı istifadə etməliyəm və burada təsvir edildiyi kimi ogr_fdw quraşdırdım. Xarici SQL Server-də məkan olmayan bir cədvəli PostgreSQL-yə bağlamağa çalışıram və sonra xarici cədvəli bir PostgreSQL məkan cədvəlinə qatacağam.

Təlimatlardan, əlaqəni qurmaq üçün parametrləri necə düzgün quracağımı bilmirəm (hətta işə salmağın mümkün olduğunu düşünürəm) və ogr_fdw_info köməkçi proqramından necə istifadə edəcəyimi başa düşmürəm. Məsələn, cəhd etdim:

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

amma bu məni heç yerə çatdırmır. Bu ogr_fdw kitabxanasından istifadə edərək xarici bir SQL server cədvəlinə necə qoşulmağı bilən varmı?


Paulun təklifi ilə ogrinfodan belə istifadə etməyə çalışdım:

ogrinfo "MSSQL: server = ServerName; verilənlər bazası = DatabaseName; UID = SQLServerUserName; PWD = SQLServerUserNamePassword"

Bunu sınayanda heç olmasa əldə etdim

Metadata cədvəllərini işə salma xətası: [Microsoft] [ODBC Server Driver] [SQL Server] CREATE CƏDVƏL icazəsi 'DatabaseName' verilənlər bazasında rədd edildi.

Mənə görə bu, heç olmasa bir növ bağlanacağım deməkdir, amma tamamilə yox. SQL Server İdarəeticisi mənə yalnız oxuma hüququ verən bir istifadəçi adı verdi və məntiqi görünür, çünki yalnız bir məkan olmayan cədvəl oxumaq və öz maşınımdakı PostgreSQL verilənlər bazamın içərisindəki xarici cədvəl kimi qoymaq istəyirəm. Ogr_fdw istifadə qaydalarını anlamağa başlamazdan əvvəl ogrinfo istifadə edərək əlaqə qura biləcəyimə əmin olmalıyam. Ogrinfo açıqlamamın sonunda "təxmin edilən metadata = true" əlavə etməyə çalışdım, amma bu fərq etmədi. Səhvin bir cədvəl yaratmaqda niyə olacağını dəqiq başa düşmürəm, çünki yaratmaq üçün deyil, yalnız bağlanmaq istəyirəm. Bu əlaqəni işə salmaq üçün əlavə göstərişləriniz varmı?


Paulun təklifi ilə ətraf mühit dəyişkənliyini Windows maşınma əlavə etdim:

MSSQLSPATIAL_USE_GEOMETRY_COLUMNS = Xeyr

və indi səhv aradan qaldırıldı. Sonra ikinci bir mühit dəyişənini əlavə etməyim lazım olduğunu da tapdım:

MSSQLSPATIAL_LIST_ALL_TABLES = EVET

Bu mənə OGRINFO istifadə edərək SQL serverinə düzgün qoşulmağı və məkan olmayan cədvəlləri görmək imkanı verdi. İndi çalışdığım zaman:

ogr_fdw_info -s "MSSQL: server = ServerName; verilənlər bazası = DatabaseName; UID = SQLServerUserName; PWD = SQLServerUserNamePassword"

Bu məlumat mənbəyinə qoşula bilməyəcəyini söyləyir. Bağlantı simli OGRINFO ilə yaxşı işlədiyindən təəccübləndim, amma OGR_FDW_INFO deyil.


Əsas odur ki, düzgün bir əlaqə sətri əldə edilir, buna görə də bir əlaqə işləməyincə w / ogr_fdw_info oynayaraq düzgün iş görürsən.

"MSSQL: server = localhost  SQL2012Express; verilənlər bazası = ProSpatial; trusted_connection = bəli;"

Budur onlayn tapdığım bir OGR əlaqə sətri və GIS.SE-də başqa bir var, ogr2ogr ilə MSSQL-ə Shapefile əlaqə qura bilmir

Yaxşı bir əlaqə sətrinin nə olduğunu anlamaq üçün ogrinfo istifadə edərək müstəqil olaraq test edə bilərsiniz. Bunu etdikdən sonra, FDW-də qalan müddətdə işləməli olmalısınız.


Jan,

Bu ikili yüklədiyiniz zaman əmin deyiləm. İlk qablaşdırmada 9.3 quruluşu ilə səhv etdim və MSSQL bağlantısı üçün lazım olan ODBC sürücüsünü tərk etdim. MS Access-ə qoşulmağa çalışarkən kimsə məni xəbərdar etdi və problemi həll etdiyimdən bəri.

Ayrıca, bu gündən bəri PostGIS-i yüksəltmisinizsə, libgdal sürücüsünün üzərinə yazmış ola bilər və PostGIS ilə paketlənmiş olana (hələ də) ODBC dəstəyi daxil deyil. 2.2-də ODBC dəstəyi yaratmağı planlaşdırıram.

Təşəkkürlər, Regina