我正在尝试通过ODBC连接从第三方应用程序连接到SQL Server 2008数据库。在使用Windows身份验证设置ODBC时,我取得了成功,但在使用SQL Server身份验证设置时却没有。
我的一般过程是
- 创建64位系统ODBC DSN(“C:\ Windows \ SysWOW64 \ odbcad32.exe”)
- 当我创建DSN时,我在最后测试连接,看起来一切都很好。我可以在SQL Server中验证这一点
用户'myuser'登录成功。使用SQL Server身份验证进行连接。[客户:10.85.43.91]
- 然后我转到我的应用程序,引用DSN并尝试登录。我收到一个错误说
Unable to connect to general Datasource. Connect String: DSN=<DSN Name> Error: login failed for user ''
。然后我回到SQL错误日志,看看
用户'myuser'登录失败。原因:密码与提供的登录名不匹配。[客户:10.85.43.91]
和
用户''登录失败。原因:尝试使用SQL身份验证登录失败。服务器仅配置为Windows身份验证。[客户:10.85.43.91]
我能够通过SMSS使用该用户名连接到SQL并运行查询。
我也能够Authentication mode is MIXED.
从服务器启动时的日志行验证。通过对象资源管理器>服务器属性>安全性> SQL Server和Windows身份验证模式进行相同验证
我们昨晚启动了服务器,以确保所有这些设置都是正确的。
尝试从至少4台计算机连接时会发生这种情况。
是什么赋予了?我错过了什么?为什么我不能通过ODBC使用SQL身份验证连接到SQL?
如何将凭据传递给ODBC驱动程序?您还确定您的程序使用64位驱动程序吗?
—
Scott Chamberlain 2013年
另外我认为你可以在Stack Overflow上获得更好的答案,我投票支持。
—
Scott Chamberlain 2013年
当我通过Windows设置时,我将SQL Server用户名和密码提供给DSN,然后在应用程序中我只选择使用那个。我确信该程序使用的是64位驱动程序。该程序还可以选择从其中创建DSN(它打开Windows工具),它可以生成64位DSN。此外,如果我制作32位系统DSN,它不会显示在可用连接列表中。
—
布拉德
@ScottChamberlain我把这一切都写在了SO上然后认为这会更好:)我想我错了。
—
布拉德2013年
有关数据库管理的问题在这里是偏离主题的,但可以在数据库管理员堆栈交换中询问。
—
bwDraco 2013年