通过odbcConnection连接时无效的连接字符串属性



我正在尝试构建一个c# WPF应用程序,可以通过DSN连接到多种类型的数据库,我遇到了一个障碍。通常连接信息(用户名/密码)完全在ODBC连接中声明,但当尝试连接到SQL服务器(我设置用于测试目的)时,我遇到了一些问题。

如果我尝试

string connString = $"DSN={dsn};";
OdbcConnection cnn = new OdbcConnection(connString);
cnn.Open()

我得到一个错误

"用户登录失败。">

如果我将连接字符串更改为明确声明用户名和密码,如

string connString = $"DSN={dsn}; UID = {username}; PW = {password};";
我得到相同的错误加上

无效的连接字符串属性

在搜索不同的连接字符串示例后,我尝试了不同的版本,但我被难住了。似乎服务器正在返回一个错误,我传递了它的用户名,而不是实际的登录名(CCLogin),而且连接字符串的格式是错误的,但我找不到任何问题的格式…

用UID指定用户名是正确的,但是密码属性是PWD—您缺少了末尾的d。这就是它所抱怨的。登录失败是临时的—它没有密码,但这是次要问题。您可能还会发现它对DSN不满意——ODBC倾向于使用Server={Server};Database={Database}。通常,您还将指定一个驱动程序,因此完整的ODBC连接字符串看起来像(假设您使用Sql Server)之一:

Driver={Sql Server};Server=servername;Database=db_name;Uid=username;Pwd=password;

或者,如果是可信连接(使用与Windows登录相同的凭据)

Driver={Sql Server};Server=servername;Database=db_name;Trusted Connection=Yes;

从其中任何一个合适的开始,假设它有效,如果您想尝试找出基本最小值是什么,您可以从每次消除一个键值对开始,直到它失效。不过,作为一点建议,我建议使用长格式。

如果您的服务器使用的不是SQL server,请通过搜索"ODBC Data Source administration"来查找驱动程序名称。这将给你相应的应用程序,你正在使用的驱动程序应该在那里列出。

ODBC的优点是它很老而且非常稳定,但是它往往对如何设置它很挑剔。好消息是,一旦设置得当,它可以在几十年内正常工作,不会有任何闪失。

最新更新