SQL Server 2012: добавление связанного сервера в PostgreSQL

Я пытаюсь подключить PostgreSQL к серверу SQL Server 2012 в качестве связанного сервера

Я нашел несколько советов на разных форумах и следую им. Но у меня проблема с аутентификацией.

объясняю:

на SQL Server я установил драйвер ODBC для PostgreSQL (psqlodbc_09_02_0100-x64). Я создал системный DSN для конкретной базы данных на PostgreSQL. Этот DSN работает правильно.

используя SSMS, я запускаю эту команду, чтобы добавить связанный сервер:

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

после запуска у меня есть новый связанный сервер под названием "lnk_test". Когда я получаю следующее сообщение об ошибке:

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)

сообщение об ошибке на французском языке, traduction: "аутентификация паролем не удалось для пользователя "postgres". Я вижу то же сообщение об ошибке в журнал сервера.

кто-то есть идея для решения этой проблемы?

спасибо продвижение.

Джером

[обновление 2/08/2013] Я завершаю этот пост с результатом теста, который я понимаю сегодня.

при использовании сниффера пакетов я проверяю пакеты, отправленные при тестировании соединения через администратора источника данных ODBS (64-бит) и через связанный сервер под SMSS.

данные одинаковы между Системой 2 для:

  • открытие соединения с В PostgreSQL

  • отправка строки подключения (все параметры совпадают)

  • ответ PostgreSQL, запрашивающий пароль (только другое значение соли, но это нормально)

  • пароль отправлен таким же образом (зашифрован с помощью MD5)

но после, ответ сервера отличается:

для источника данных ODBC все работает правильно. Я получаю аутентификация и может отправить тестовый запрос.

для SMSS я получаю сообщение об ошибке (как описано выше).

1 ответов


Ок, я нашел решение.

в файле pg_hba.conf file, я меняю метод отправки паролей из MD5 на trust. После перезагрузки сервера работает мое связанное соединение с сервером.

запись выглядит так:

Type Database User Address   Method

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

в надежде, что помощь другим народам.