我尝试一个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,我收到一条错误消息(如上所述)。