ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf部署
Posted on 2005-12-02 01:26 Tony Qu 閱讀(1993) 評論(5) 編輯 收藏 引用 收藏至365Key 所屬分類: .NET 2.0 技術(shù) 、SQL Server 2005 、SD Channel由于本人機(jī)器上僅安裝SQLSERVER2005,而沒有裝SQLSERVER EXPRESS,于是在部署user profile時遇到了aspnetdb.mdf無法連接的問題,經(jīng)過一番折騰
,總算解決了,下面把經(jīng)驗寫下來與大家分享。
由于沒有aspnetdb.mdf數(shù)據(jù)庫,因此得先建立一個,這個可以通過aspnet_regsql.exe完成,該程序位于C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\下。運(yùn)行它之后會彈出 [圖1] 的窗口:

圖1
按"Next >"按鈕,進(jìn)入圖2

圖2
在圖2中,我們會發(fā)現(xiàn)除了有配置數(shù)據(jù)庫外,還有刪除數(shù)據(jù)庫的功能,以后說不定可以派上用場,現(xiàn)在自然選Configure SQL Server for application services,按"Next >"按鈕,進(jìn)入圖3。

圖3
現(xiàn)在進(jìn)入數(shù)據(jù)庫選擇界面,如果SQLSERVER就安裝在本地的話,可以不用改任何東西,直接按"Next >"。這里的Database顯示為<default>,表示默認(rèn)數(shù)據(jù)庫名為aspnetdb,你也可以根據(jù)自己的需要更改名稱。

圖4
最后進(jìn)入圖4,現(xiàn)在按"Next >"就可以開始安裝數(shù)據(jù)庫了,當(dāng)Finish按鈕亮起時,表明數(shù)據(jù)庫安裝成功,一切順利!
接下來是設(shè)置數(shù)據(jù)庫連接字符串。
默認(rèn)情況下,web.config中的LocalSqlServer屬性是這樣配置的:
Login Failed for User MachineName\ASPNET
又試圖把User Instance設(shè)為false,再次報錯:
其實就是標(biāo)準(zhǔn)SqlServer連接字符串,郁悶……
參考資料:
http://weblogs.asp.net/bsimser/archive/2005/11/20/431029.aspx?Pending=true

由于沒有aspnetdb.mdf數(shù)據(jù)庫,因此得先建立一個,這個可以通過aspnet_regsql.exe完成,該程序位于C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\下。運(yùn)行它之后會彈出 [圖1] 的窗口:

圖1
按"Next >"按鈕,進(jìn)入圖2

圖2
在圖2中,我們會發(fā)現(xiàn)除了有配置數(shù)據(jù)庫外,還有刪除數(shù)據(jù)庫的功能,以后說不定可以派上用場,現(xiàn)在自然選Configure SQL Server for application services,按"Next >"按鈕,進(jìn)入圖3。

圖3
現(xiàn)在進(jìn)入數(shù)據(jù)庫選擇界面,如果SQLSERVER就安裝在本地的話,可以不用改任何東西,直接按"Next >"。這里的Database顯示為<default>,表示默認(rèn)數(shù)據(jù)庫名為aspnetdb,你也可以根據(jù)自己的需要更改名稱。

圖4
最后進(jìn)入圖4,現(xiàn)在按"Next >"就可以開始安裝數(shù)據(jù)庫了,當(dāng)Finish按鈕亮起時,表明數(shù)據(jù)庫安裝成功,一切順利!
接下來是設(shè)置數(shù)據(jù)庫連接字符串。
默認(rèn)情況下,web.config中的LocalSqlServer屬性是這樣配置的:
<connectionStrings>
<add name="LocalSqlServer" connectionString="Data Source=./SQLExpress;Integrated Security=true;AttachDBFileName=|DataDirectory|aspnetdb.mdf;User Instance=True"
providerName="System.Data.SqlClient"/>
</connectionStrings>
該連接字符串是專門為SQLSERVER EXPRESS準(zhǔn)備的,如果沒有安裝SQLSERVER EXPRESS就會出現(xiàn)以下錯誤<add name="LocalSqlServer" connectionString="Data Source=./SQLExpress;Integrated Security=true;AttachDBFileName=|DataDirectory|aspnetdb.mdf;User Instance=True"
providerName="System.Data.SqlClient"/>
</connectionStrings>
An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
這表明連接根本無法建立。為此,我試圖把DataSource改為./本地sqlserver instance名,結(jié)果還是報錯:Login Failed for User MachineName\ASPNET
又試圖把User Instance設(shè)為false,再次報錯:

Invalid value for key ‘a(chǎn)ttachdbfilename‘.
其實出錯原因很簡單,因為App_Data目錄下沒有aspnetdb.mdf這個文件。在網(wǎng)上查了一下,終于找到了解決方法,重新設(shè)置連接字符串為<add name="LocalSqlServer" connectionString="Data Source=[Instance Name];Initial Catalog=aspnetdb;Integrated Security=false;UID=sa;PWD=xxxxxx"
其實就是標(biāo)準(zhǔn)SqlServer連接字符串,郁悶……
參考資料:
http://weblogs.asp.net/bsimser/archive/2005/11/20/431029.aspx?Pending=true