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

时间:2014-12-02 15:23:42

标签: sql-server odbc unixodbc

从ORACLE数据库到MS SQL Server进行ODBC连接时出现问题。

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

环境:

  • ODBC驱动程序:用于SQL Server的Microsoft ODBC驱动程序11
  • 驱动程序管理器:Unix ODBC 2.3.0
  • 操作系统:ORACLE linux 6.5
  • 目标数据库:MS SQL Server 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 ''.

2 个答案:

答案 0 :(得分:1)

除了使用从ini读取uid / pwd的ODBC驱动程序之外,您可以做的就是让应用程序传递详细信息。你没有提到什么应用程序调用驱动程序?

答案 1 :(得分:1)

ODBC配置可以指定您是使用SQL身份验证还是集成。但是你不能用它来存储用户和密码。在Windows中也是如此。不太确定unser linux,但ODBC是ODBC。

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

仅提供连接字符串的建议:http://www.connectionstrings.com/