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).