SQL Server 2012: Ajout d'un serveur lié à PostgreSQL

J'essaie de me connecter un PostgreSQL SQL Server 2012 serveur en tant que serveur lié

J'ai trouvé quelques conseils sur les différents forum et de le suivre. Mais je suis coincé avec un problème d'authentification.

Je m'explique:

Sur le Serveur SQL server, j'ai installer le pilote ODBC pour PostgreSQL (psqlodbc_09_02_0100-x64). J'ai créé un système de source de données à une base de données spécifique sur PostgreSQL. Ce DSN fonctionner correctement.

L'aide de SSMS, je exécutez cette commande pour ajouter le serveur lié:

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

Après l'exécution, j'ai un nouveau Serveur Lié appelé "lnk_test". Lorsque je reçois le message d'erreur suivant:

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)

Le message d'erreur est en français, la traduction est: "l'authentification par mot de passe a échoué pour l'utilisateur "postgres". J'ai trouver le même message d'erreur dans le log du serveur PostgreSQL.

Est-ce quelqu'un a une idée pour résoudre ce problème?

Merci d'avance.

Jérôme

[Mise à jour 2/08/2013]
Je termine ce post avec le résultat d'un test, je me rends compte aujourd'hui.

Lors de l'utilisation d'un renifleur de paquets, j'ai vérifier les paquets envoyés lors du test de la connexion par le biais de la ODBS Administrateur de Source de Données (64-bit) et par le Serveur Lié, en vertu de SMS.

Les données sont les mêmes entre les 2:

  • L'ouverture de la connexion à PostgreSQL
  • L'envoi de la chaîne de connexion (tous les paramètres sont les mêmes)
  • la réponse de PostgreSQL demander de mot de passe (seulement différente, c'est le sel de la valeur, mais c'est normal)
  • le mot de passe sont envoyés de la même manière (crypté avec MD5)

Mais après, la réponse du serveur est différent:

Pour la Source de Données ODBC, tous fonctionne correctement. - Je recevoir l'authentification et peut envoyer des requête de test.

Pour des SMS, je reçois un message d'erreur (comme décrit ci-dessus).

OriginalL'auteur Jérôme Duchêne | 2013-08-01