2013-08-01 13 views
9

provo a collegare un PostgreSQL a SQL Server 2012 server come server collegatoSQL Server 2012: Aggiungere un server collegato a PostgreSQL

ho trovato alcuni consigli su diversi forum e seguirla. Ma sono bloccato con un problema di autenticazione.

spiego:

In SQL Server, ho installare il driver ODBC per PostgreSQL (psqlodbc_09_02_0100-x64). Ho creato un DSN di sistema su un database specifico su PostgreSQL. Questo DSN funziona correttamente.

Utilizzando SQL Server Management Studio, ho eseguire questo comando per aggiungere il server collegato:

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 

Dopo la corsa, ho un nuovo server collegato denominato "lnk_test". Quando ricevo il seguente messaggio di errore:

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) 

Il messaggio di errore è in francese, la traduction è: "l'autenticazione tramite password riuscito per l'utente 'postgres' Trovo lo stesso messaggio di errore nel registro del server PostgreSQL. .

C'è qualcuno ha un'idea per risolvere questo problema?

Grazie in anticipo.

Jerome

[Aggiornamento 2/08/2013] Completo questo post con il risultato di un test che realizzo oggi.

Quando si utilizza uno sniffer di pacchetti, controllo i pacchetti inviati durante il test della connessione tramite l'amministratore ODBS Data Source (64-bit) e tramite il server collegato SMSS.

I dati sono uguali tra il sistema 2 per:

  • apertura del collegamento a PostgreSQL

  • Invio stringa di connessione (tutti i parametri sono gli stessi)

  • la risposta di PostgreSQL che richiede la password (solo diverso è il valore salt, ma è normale)

  • la password sono inviò nello stesso modo (criptato con MD5)

Ma dopo, la risposta del server sono diverse:

per l'origine dati ODBC, tutto funziona correttamente. Ricevo l'autenticazione e posso inviare una query di prova.

Per SMSS, ricevo un messaggio di errore (come descritto in alto).

risposta

7

Ok, ho trovato la soluzione.

Nel file pg_hba.conf, cambio il metodo per l'invio di password da MD5 a trust. Dopo aver ricaricato il server, la mia connessione al server collegato funziona.

l'ingresso è ora:

Type Database User Address Method 

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

In speranza che aiutare gli altri popoli.