在與 SQL Server 建立連接時(shí)出現(xiàn)與網(wǎng)絡(luò)相關(guān)的或特定于實(shí)例的錯(cuò)誤。未找到或無法訪問服務(wù)器。請(qǐng)驗(yàn)證實(shí)例名稱是否正確并且 SQL Server 已配置為允許遠(yuǎn)程連接。 (provider: 命名管道提供程序, error: 40 - 無法打開到 SQL Server 的連接)
說明: 執(zhí)行當(dāng)前 Web 請(qǐng)求期間,出現(xiàn)未處理的異常。請(qǐng)檢查堆棧跟蹤信息,以了解有關(guān)該錯(cuò)誤以及代碼中導(dǎo)致錯(cuò)誤的出處的詳細(xì)信息。
異常詳細(xì)信息: System.Data.SqlClient.SqlException: 在與 SQL Server 建立連接時(shí)出現(xiàn)與網(wǎng)絡(luò)相關(guān)的或特定于實(shí)例的錯(cuò)誤。未找到或無法訪問服務(wù)器。請(qǐng)驗(yàn)證實(shí)例名稱是否正確并且 SQL Server 已配置為允許遠(yuǎn)程連接。 (provider: 命名管道提供程序, error: 40 - 無法打開到 SQL Server 的連接)
當(dāng)出現(xiàn)這個(gè)問題時(shí),其實(shí)很簡單,是不同的數(shù)據(jù)庫版本,地連接方法個(gè)一樣;注意以下紅字部分。我以前是用Server=.;database=jtj;User ID=sa;Password=
改成了Server==.//SQLEXPRESS;Initial Catalog=jtj;User ID=sa;Password=
折騰了好久才搞好。
1.開啟sql2005遠(yuǎn)程連接功能,開啟辦法如下:
配置工具->Sql Server外圍應(yīng)用配置器->服務(wù)和連接的外圍應(yīng)用配置器->打開MSSQLSERVER節(jié)點(diǎn)下的Database Engine節(jié)點(diǎn),先擇“遠(yuǎn)程連接”,接下建議選擇“同時(shí)使用TCP/IP和named pipes”,確定后重啟數(shù)據(jù)庫服務(wù)就可以了。
2.登陸設(shè)置改為:Sql Server 和 Windows 身份驗(yàn)證模式,具體設(shè)置如下:
SQL Server Management Studio管理器->Windows 身份驗(yàn)證連接服務(wù)器->對(duì)象資源管理器中選擇你的數(shù)據(jù)服務(wù)器->右鍵->屬性->安全性->Sql Server 和 Windows 身份驗(yàn)證模式選中。
3.設(shè)置一個(gè)Sql Server方式的用戶名和密碼,具體設(shè)置如下:
(1)SQL Server Management Studio管理器->Windows 身份驗(yàn)證連接服務(wù)器->對(duì)象資源管理器中選擇你的數(shù)據(jù)服務(wù)器->展開服務(wù)器上的“安全性”->登陸名->在sa帳號(hào)上點(diǎn)右鍵->“選擇頁”選擇常規(guī)->更改sa登陸帳號(hào)的密碼。這樣就設(shè)置了一個(gè)用戶名為sa,密碼為:sa123456的用戶。
(2)“選擇頁”選擇狀態(tài)->登陸修改為啟用
4.數(shù)據(jù)庫連接字符串
數(shù)據(jù)庫連接字符串有好幾種,相信你自己也見過,都被搞暈了
Data Server=./SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password=sa123456
Data Server=服務(wù)器名/SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password=sa123456
Data Server=localhost/SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password=sa123456
Data Server=.;Initial Catalog=Northwind;User ID=sa;Password=sa123456
Data Server=服務(wù)器名;Initial Catalog=Northwind;User ID=sa;Password=sa123456
……
到底那種正確?這跟數(shù)據(jù)庫版本有關(guān)系,如果是Sql Server 2005 Express版本,則必須要有“/SQLEXPRESS”。而且如果這個(gè)字符串是定義為一個(gè)變量的時(shí)候,VS2005還會(huì)在“/”的下面加個(gè)紅色的波浪線提示你“/S是無法識(shí)別的轉(zhuǎn)義序列”,因此如果字符串是定義為一個(gè)變量的時(shí)候應(yīng)該寫成Server=.//SQLEXPRESS
5.注冊Sql Server數(shù)據(jù)庫
在路徑“C:/Windows/Microsoft.NET/Framework/v2.0.50727”下運(yùn)行“ASPNET_REGSQL”指令,就會(huì)出現(xiàn)ASP.NET SQL Server Setup Wizard向?qū)ВB續(xù)按下兩個(gè)下一步后就會(huì)出現(xiàn)Sql Server注冊界面,填入你要注冊的數(shù)據(jù)庫參數(shù)就注冊好了。注冊完后會(huì)在你的數(shù)據(jù)庫里多幾個(gè)表(如圖):
5.設(shè)置數(shù)據(jù)庫連接字符串
打開IIS->在默認(rèn)網(wǎng)站或是網(wǎng)站所在的虛擬目錄點(diǎn)擊右鍵選擇屬性->選擇ASP.NET選項(xiàng)卡->編輯配置->在“常規(guī)”頁簽編輯“LocalSqlServer”數(shù)據(jù)庫連接字符串:
Data Server=./SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password=sa123456
6.設(shè)置web.config文件
在web.config文件添加如下程序:
<connectionStrings>
<add name="LocalSqlServer" connectionString="Data Source=./SQLEXPRESS;Initial Catalog=Northwind;User ID=sa;Password=sa123456" providerName="System.Data.SqlClient"/>
</connectionStrings>
這樣便大功告成了。下面來測試
1.寬松的連接測試
寬松的連接測試使用SqlDataSource
VS2005服務(wù)器資源管理器選中數(shù)據(jù)庫點(diǎn)擊右鍵->選擇修改連接->填入服務(wù)器名->使用Sql Server身份驗(yàn)證填入用戶名sa及密碼sa123456->選擇或輸入一個(gè)數(shù)據(jù)庫名:Northwind->點(diǎn)擊測試連接
寬松的連接測試連接成功并不能說明數(shù)據(jù)庫就連接OK了,一開始我就是掛在這里,寬松的連接測試測試連接成功,可是始終無法讀出數(shù)據(jù)庫的內(nèi)容到網(wǎng)頁里頭。
2.嚴(yán)謹(jǐn)?shù)倪B接測試
在VS2005里選擇網(wǎng)站菜單->ASP.NET配置進(jìn)入ASP.NET網(wǎng)站管理工具->選擇提供程序->點(diǎn)擊AspNetSqlProvider的測試,若測試成功,說明數(shù)據(jù)庫設(shè)置完全正確,否則得從頭來過好好查查問題在哪里。