繁体   English   中英

SQL Server 连接错误 - 未找到数据源名称且未指定默认驱动程序

[英]SQL Server connection error - Data source name not found and no default driver specified

运行位于 Windows Server 2012 R2 共享文件夹中的第三方开发的 EXE 连接到 SQL Server 2012 Express 时,出现以下错误:

[Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序。

当 EXE 为“以管理员身份运行”时,它工作正常。 但是这个应用程序与Office和其他程序接口,因此以管理员身份运行会将其放入与其他应用程序冲突的受保护内存空间。 我需要它像以前一样正常打开。

此错误仅发生在客户端工作站安装了 Windows 10 1803 及更高版本之后。 奇怪的是,更新到 1803 及更高版本的工作站不受影响。 只有在新安装时才会出现问题。

有一些关于 1803 的东西改变了客户端的网络堆栈,这导致了 SQL 连接的许多不同的问题,我已经看到了一百种不同的解决方案,但在我们的案例中没有一个工作。

客户端计算机使用域登录帐户连接到 Server 2012。 每个域用户帐户都被授予本地管理员权限和完全管理员权限。 客户端工作站是带有 ESET 防病毒软件的正常 Windows 10 专业版安装。 在测试 ODBC 连接时,它成功并工作。 只有在运行程序时才会发生错误。

在服务器端我....启用命名管道,禁用和删除 SMB1.0

那么这里发生了什么? 为什么从 1803 开始​​我们必须以管理员身份运行才能获得连接?

未找到数据源名称

我会首先检查数据源是否在 "User" 或 "System" 下定义。 如果它是管理员的用户,则无法访问它,除非用户之前使用“以管理权限运行”选项运行它

如果它被定义为系统 DSN,则 1803 之后的用户可能没有足够的权限访问存储它的注册表,因此这是最可能的情况。

最佳做法是查看您是否可以使用 OLE 或其他方式而不是 ODBC 修改您的连接,以便它可以是无 DNS 的,最终尝试在与运行它的用户相同的用户下面定义一个同名的 DSN,应该在之前阅读该框架将在系统/本地机器注册表部分下寻找相同的 DSN 名称。

要解决更深层次的注册表权限问题,您可以使用可从 MS 网站下载的以前的 Sysinternals procmon,这必须使用“以管理权限运行”来执行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM