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

时间:2019-02-03 08:09:29

标签: sql-server odbc

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

  

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

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

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

大约是1803年,它改变了客户端的网络堆栈,导致SQL连接出现许多不同的问题,我看到了一百种不同的解决方案,但在我们的情况下都无效。

客户端计算机使用域登录帐户连接到Server 2012。每个域用户帐户都具有本地管理员权限和完整的管理员权限。客户端工作站是使用ESET防病毒软件的常规Windows 10 Pro安装。在测试ODBC连接时,它是成功的并且可以工作。仅在运行程序时,该错误才会发生。

在服务器端,我有...。已启用命名管道,已禁用并删除了SMB1.0

那么这是怎么回事?为什么从1803年开始,我们必须以管理员身份运行才能建立连接?

1 个答案:

答案 0 :(得分:0)

  

找不到数据源名称

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

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

最佳方法是查看是否可以使用OLE或其他方式(而不是ODBC)来修改连接,以便它可以是无DNS的,最终尝试在具有运行该用户的用户的用户下定义具有相同名称的DSN。在框架要在“系统/本地计算机注册表”部分下查找相同的DSN名称之前,请先阅读该文件。

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