可能問題一:
確切的說是在IIS 7.5中有這問題
就是在visual studio中都用的好好的,但是加載到IIS上的時候竟然報錯“
在與 SQL Server 建立連接時出現與網絡相關的或特定於實例的錯誤。未找到或無法訪問服務器。請驗證實例名稱是否正確並且 SQL Server 已配置為允許遠程連接。 (provider: Named Pipes Provider, error: 40 - 無法打開到 SQL Server 的連接)
說明: 執行當前 Web 請求期間,出現未經處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。
異常詳細信息: System.Data.SqlClient.SqlException: 在與 SQL Server 建立連接時出現與網絡相關的或特定於實例的錯誤。未找到或無法訪問服務器。請驗證實例名稱是否正確並且 SQL Server 已配置為允許遠程連接。 (provider: Named Pipes Provider, error: 40 - 無法打開到 SQL Server 的連接)
源錯誤:
異常詳細信息: System.Data.SqlClient.SqlException: 在與 SQL Server 建立連接時出現與網絡相關的或特定於實例的錯誤。未找到或無法訪問服務器。請驗證實例名稱是否正確並且 SQL Server 已配置為允許遠程連接。 (provider: Named Pipes Provider, error: 40 - 無法打開到 SQL Server 的連接)
源錯誤:
行 497: catch (System.Data.SqlClient.SqlException e) 行 498: { 行 499: throw e; 行 500: } 行 501: |
源文件: D:\MyClassLib\DBUtility\DbHelperSQLP.cs
行: 499
堆棧跟蹤:
堆棧跟蹤:
[SqlException (0x80131904): 在與 SQL Server 建立連接時出現與網絡相關的或特定於實例的錯誤。未找到或無法訪問服務器。請驗證實例名稱是否正確並且 SQL Server 已配置為允許遠程連接。 (provider: Named Pipes Provider, error: 40 - 無法打開到 SQL Server 的連接)] DBUtility.DbHelperSQLP.ExecuteReader(String strSQL) in D:\MyClassLib\DBUtility\DbHelperSQLP.cs:499 SfxtHelper.GetCurrentYis(String start, String end) in d:\SunOA\Web\App_Code\SfxtHelper.cs:406 shouji.Page_Load(Object sender, EventArgs e) in d:\SunOA\Web\fyt\shouji.aspx.cs:41 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35 System.Web.UI.Control.OnLoad(EventArgs e) +91 System.Web.UI.Control.LoadRecursive() +74 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207 |
版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.272
”
網上動不動,網絡訪問啊開啟遠程連接,千篇一律的復制,也不看看具體情況,浪費資源還害的別人增加了搜索難度。
本來在visual studio就可以正常使用,說明這網絡肯定不存在問題,也不存在什么遠程連接的問題
很明顯 這就是iis的設置問題。
作為服務器,安全是很重要的,微軟在iis7.5上做了些改動。
在iis7.5以前,iis的默認賬戶是NetworkServices,從iis7.5開始使用當前程序(網站)的應用程序池名稱作為默認賬戶(在系統盤下的“用戶”文件下將會看到這些特殊的用戶名)
而這些賬戶的權限是很小的,小到連訪問網絡的權限都沒有,所以訪問sql 就會出錯了啊,好在微軟可以讓我們自己指定賬戶,這樣我們就可以新建一個賬戶,給他指定要權限,然后再給應用程序池使用,問題引刃而解了
號召大家不要再盲目轉別人的帖子了,因為各人碰到的問題不一樣,轉帖的時候盡量總結下,加點自己的東西,既有助於自己,又能讓別人更容易的搜索到有用的東西
可能問題二:
1、程序-----SQL Server2008---配置工具——SQL Server配置管理器
IP地址填入你自己的IP,TCP端口填寫為1433
植入SQLEXPRESS的協議下面那個JAY的協議根據電腦不同可能會不同,點擊按照如上同樣的設置
2、把如下的都啟動起來,啟動模式改為自動啟動
3、打開“MS SQL Server Management Studio”,選擇“Windows身份驗證”登錄
右鍵---方面,按照如下設置,把紅框里面的都設置為True
4、
在Windows 防火牆中為“SQL Server 2005”創建例外
1.在 Windows 防火牆設置界面中,選擇“ 例外” 選項卡,然后單擊“添加程序”
2.在“添加程序窗口”中單擊“瀏覽”
3.然后找到“C:\ProgramFiles\Microsoft Files\Microsoft SQL Server\ MSSQL.1 \MSSQL\Binn\sqlservr.exe”,
單擊“確定”返回
注意 : 路徑可能會根據 SQL Server 2005 安裝不同而不同。 MSSQL.1 是占位符,對應數據庫實例ID。
4.對每個需要打開遠程訪問的SQL Server 2005 實例,重復步驟 1 至 3。
在Windows 防火牆中為“SQLBrowser”創建例外
1.在 Windows 防火牆設置界面中,選擇“ 例外” 選項卡,然后單擊“添加程序”
2.在“添加程序窗口”中單擊“瀏覽”
3.然后找到“C:\ProgramFiles\Microsoft Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe”,
單擊“確定”返回
注意 : 路徑可能會根據 SQL Server 2005 安裝不同而不同。
5、重啟服務