簡體   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