[英]VB6 applications can connect to SQL Server, but .NET applications can't
我們的系統結合使用VB6遺留應用程序和較新的.NET應用程序。 應用程序部署到我們的客戶端,他們從終端服務器框運行應用程序,SQL Server數據庫在不同的框上運行。
VB6應用程序工作正常,而所有.NET應用程序在啟動時都會失敗(嘗試連接到數據庫以讀取配置信息),每次都有錯誤:
System.Data.SqlClient.SqlException:建立與SQL Server的連接時發生與網絡相關或特定於實例的錯誤。 服務器未找到或無法訪問。 驗證實例名稱是否正確,以及SQL Server是否配置為允許遠程連接。 (提供程序:TCP提供程序,錯誤:0 - 連接嘗試失敗,因為連接方在一段時間后沒有正確響應,或者由於連接主機無法響應而建立連接失敗。)
這是非常奇怪的事情:我在C#中創建了一個測試.NET應用程序,它復制了.NET應用程序使用的確切連接字符串 - 我部署了一個顯示所使用的實際連接字符串的應用程序的檢測版本 - 以及測試應用程序的工作原理 。
VB6連接字符串(有效): Provider=SQLOLEDB;Data Source=servername;Initial Catalog=databasename;User ID=username;Password=password;
.NET連接字符串(兩者都有效和不起作用): Data Source=servername;Initial Catalog=databasename;User ID=username;Password=password;Application Name="ourappname"
我們的其他客戶都沒有遇到過同一個二進制文件的問題,這告訴我.NET應用程序如何與這個特定客戶端系統進行交互是一個問題。
我應采取哪些步驟來解決/解決此問題? 我現在真的很茫然。 我希望其他人之前見過這個問題; 我在Google上找不到任何相關內容。
我發現這種行為通常有幾個主要原因:
SQL Server未配置為偵聽特定連接類型。 要確定這一點,請在SQL計算機上打開SQL Server配置管理器,單擊SQL Server網絡COnfiguraiton,然后單擊MSSQLServer的協議。 驗證是否已啟用TCP / IP。
SQL Server不允許遠程連接(如果其他應用程序正在連接,那么這顯然不是問題)。
客戶端計算機未配置為使用SQL Server支持的協議與SQL Server通信,或者客戶端計算機輸入的配置信息不正確。 要驗證這一點,請從Run ...提示符運行cliconfg,並確保啟用了相應的協議,並且Alias選項卡中沒有任何沖突的別名。 我通常會為連接字符串中配置的計算機名稱添加一個特定的IP地址,以防出現DNS問題(至少用於測試)。
由於VB6客戶端工作,而.Net客戶端不工作,因此64位與32位訪問可能存在問題。 如果您的應用程序是針對64位或任何CPU編譯的,您可以嘗試使用32位構建來查看是否可以解析訪問權限。 如果是這樣,那么這很可能是64位SQL客戶端配置問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.