2013-08-01 89 views
9

我嘗試一個PostgreSQL到SQL Server連接2012服務器作爲鏈接服務器的SQL Server 2012:鏈接的服務器添加到PostgreSQL

我發現在不同的論壇上提出了一些建議,並按照它。但我堅持認證問題。

我解釋一下:

在SQL Server中,我有安裝PostgreSQL的(psqlodbc_09_02_0100-64)的ODBC驅動程序。我創建了一個系統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的’我找到日誌PostgreSQL服務器在相同的錯誤消息。 。

是有人有一個想法,爲解決這個問題呢?提前

感謝。

傑羅姆

[更新2013年2月8日] 我完成這篇文章與我今天實現的測試結果。當使用數據包嗅探器時,我檢查通過ODBS數據源管理員(64位)和SMSS下的鏈接服務器測試連接時發送的數據包。

的數據是2系統之間是相同的爲:

  • 打開到PostgreSQL

  • 的連接發送所述連接字符串(所有參數都相同)

  • 的PostgreSQL要求輸入密碼的響應(只有不同​​的是鹽值,但這是正常的)

  • 密碼被sended以相同的方式(用MD5加密後)

但之後,服務器的響應不同:

對於ODBC數據源,一切工作正常。我收到驗證並可以發送測試查詢。

對於SMSS,我收到一條錯誤消息(如上所述)。

回答

7

好的,我找到了解決方案。

在pg_hba.conf文件中,我更改了從MD5向密碼發送密碼的方法。重新加載服務器後,我的鏈接服務器連接起作用。

條目現在是:

Type Database User Address Method 

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

在希望幫助別人人民。