ODBC驱动程序无法读取SQL Server身份验证模式下的用户数据

问题描述:

从ORACLE数据库到MS SQL Server的ODBC连接有问题。ODBC驱动程序无法读取SQL Server身份验证模式下的用户数据

我已经实现了与sqlcmd的连接。所以服务器可以看到对方并且可以进行通信。 ODBC驱动程序在身份验证时失败,因为它无法从odbc.ini文件读取用户和密码数据。 我读过这种情况,因为odbc驱动程序不接受认证数据,如果它以纯文本形式存储的,但没有解释如何以其他方式存储数据。

环境:

  • ODBC驱动程序:Unix的ODBC 2.3.0
  • OS:ORACLE的Linux 6.5
  • 目标数据库:MS SQL服务器的SQL Server
  • 驱动程序管理Microsoft ODBC驱动程序11 2008 R2

这工作:

sqlcmd -S address -U username -P password 

odbc.ini文件:

[SQL_LINK] 
Driver = ODBC Driver 11 for SQL Server 
Server = tcp:address,port 
UID = username 
PWD = password 

日志文件:

[ODBC][913][1417453346.612341][SQLConnect.c][3654] 
       Entry: 
         Connection = 0x18f40a0 
         Server Name = [SQL_LINK][length = 8 (SQL_NTS)] 
         User Name = [NULL] 
         Authentication = [NULL] 
       UNICODE Using encoding ASCII 'UTF8' and UNICODE 'UTF16LE' 

       DIAG [28000] [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Login failed for user ''. 

比使用,它读取UID/PWD一个ODBC驱动程序之外的所有INI你能做的就是下载应用程式通过细节。你没有提到哪个应用程序正在调用驱动程序?

+0

我用的是“ISQL SQL_LINK”命令来测试链接。您如何管理通过用户详细信息的应用程序? – Tamas 2014-12-02 16:12:04

+0

如果您使用isql,那么“isql SQL_LINK uid pwd”将执行您想要的操作 – 2014-12-03 17:24:12

+0

我仅将isql命令用于测试目的。最后的目标是在oracle中创建一个工作数据库链接。 – Tamas 2014-12-03 22:18:35

ODBC配置可以指定您使用SQL验证或集成。但是你不能用它来存储用户和密码。这在Windows中是正确的。不太确定unser linux,但是ODBC是一个ODBC。

我不知道您正在使用的应用程序或技术,但是:您需要使用用户名和密码填充相应的连接字符串。

只是为了连接字符串的建议:http://www.connectionstrings.com/

+0

Postgre ODBC驱动程序可以将用户数据存储在odbc.ini文件中,我认为它通常工作。在ORACLE SQL开发者中,我创建了一个数据库链接'CREATE PUBLIC DATABASE LINK SQL_LINK连接到“un”IDENTIFIED BY“pw”使用'SQL_LINK';'但是当我运行一个选择时,它说'ORA-28545:代理 无法检索NETWORK/NCR消息的文本65535' – Tamas 2014-12-03 09:12:42