2013-08-01 14 views
9

próbuję podłączyć PostgreSQL do serwera SQL Server 2012 jako serwer połączonySQL Server 2012: Dodaj do połączonego serwera PostgreSQL

znalazłem kilka rad na innym forum i po nim. Ale utknąłem z problemem uwierzytelnienia.

wyjaśnię:

W SQL Server, mam zainstalować sterownik ODBC dla PostgreSQL (psqlodbc_09_02_0100-x64). Stworzyłem systemową DSN do określonej bazy danych w PostgreSQL. Ten DSN działa poprawnie.

Korzystanie SSMS, uruchomić to polecenie, aby dodać serwer połączony:

EXEC master.dbo.sp_addlinkedserver 
@server = N'lnk_test', 
@srvproduct=N'PostgreSQL Unicode(x64)', 
@provider=N'MSDASQL', 
@provstr=N'Driver=PostgreSQL Unicode(x64);uid=postgres;Server=test1;database=accueil;pwd=MyPassword;SSLmode=disable;PORT=5432' 

EXEC master.dbo.sp_addlinkedsrvlogin 
@rmtsrvname=N'lnk_test', 
@useself=N'True', 
@locallogin=NULL, 
@rmtuser=NULL, 
@rmtpassword=NULL 

Po uruchomieniu, mam nowy serwer połączony nazwie „lnk_test”. Kiedy pojawia się następujący komunikat o błędzie:

Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "pgTest1_accueil". 
OLE DB provider "MSDASQL" for linked server "pgTest1_accueil" returned message "[Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed". 
OLE DB provider "MSDASQL" for linked server "pgTest1_accueil" returned message "FATAL: authentification par mot de passe échouée pour l'utilisateur « postgres »". (Microsoft SQL Server, Error: 7303) 

komunikat o błędzie jest w Francuskiej, traduction brzmi: „Uwierzytelnianie hasłem powiodło się dla użytkownika«postgres»Uważam ten sam komunikat o błędzie w dzienniku serwera PostgreSQL. .

Czy ktoś ma pomysł na rozwiązanie tego problemu?

Dzięki z góry.

Jerome

[Aktualizacja 2/08/2013] Kończę ten post z wynikiem testu, który dziś zdaję sobie z realizacji.

Kiedy używam sniffera pakietów, sprawdzam pakiety wysyłane podczas testowania połączenia za pośrednictwem ODBS Data Source Administrator (64-bit) i przez serwer Linked w ramach SMSS.

dane są takie same między systemem do 2 dla:

  • Otwarcie połączenia z PostgreSQL

  • Wysyłanie ciąg połączenia (wszystkie parametry są takie same)

  • się odpowiedź PostgreSQL z prośbą o hasło (tylko inna jest wartość salt, ale jest to normalne)

  • hasło są Wysłano wiadomość w taki sam sposób (zaszyfrowane z MD5)

Ale po odpowiedź serwera różnią:

Dla ODBC Data Source, wszystko działa poprawnie. Otrzymuję uwierzytelnienie i mogę wysłać zapytanie testowe.

W przypadku wiadomości SMS pojawia się komunikat o błędzie (zgodnie z opisem górnym).

Odpowiedz

7

Ok, znalazłem rozwiązanie.

W pliku pg_hba.conf zmieniam metodę wysyłania haseł z MD5 na zaufanie. Po ponownym załadowaniu serwera działa połączenie z połączonym serwerem.

wpis jest teraz:

Type Database User Address Method 

host all  all x.x.x.x/x trust 

W nadziei, że pomaganie innym narodom.

Powiązane problemy