首页 > 解决方案 > 客户端应用程序发送用户名,SQL Server 2019 将其转换为 Windows 身份验证并引发错误

问题描述

我们有一个桌面应用程序,它使用通用用户名和密码连接到 Azure 中托管的 SQL Server 2019。从 Windows 10 执行应用程序时,此连接完美运行。

但是从 Windows 7 执行时,相同的应用程序无法运行。在 SQL 错误日志中,我们注意到,它忽略了提供的用户名,而是选择执行此应用程序的用户(Windows 身份验证)并验证他们对数据库的访问。在我们的例子中,用户无权访问数据库。因此它失败了。

请澄清,为什么它忽略提供的用户名以及为什么它需要 Windows 身份验证?

SQL 错误日志中的错误:

2021 年 4 月 1 日 14:16:31,MSSQL$SQLPRDXXXX,审核失败,用户“NMPC\abcde”登录失败。原因:基于令牌的服务器访问验证因基础结构错误而失败。登录缺少连接 SQL 权限。[客户端:IP 地址],(4),18456,NMPC\abcde,DB SERVER 名称。

桌面应用程序是供应商产品。它使用 UDL 文件

UDL 文件的内容:

[oldb]; 此行之后的所有内容都是 OLE DB 初始化字符串
Provider=SQLOLEDB.1;Persist Security Info=False;User ID=generic_user;Initial Catalog=databasename;Data Source=Servername

标签: windows-7sql-server-2019

解决方案


推荐阅读