[ASP.NET] 將預設的會員資料庫以 SQL Server 取代

我們知道, 從 ASP.NET 2.0 開始,我們可以使用內建而且現成的 Membership、Roles、Profile 等等功能。而且如果你使用 Visual Studio 進行開發時, 你可以利用 ASP.NET 組態工具來建立 app_data 資料夾下的 aspnetdb 資料庫,裡面就是上述功能所使用的資料庫檔案。不過在上述情況中,你必須在本機上安裝有 SQL Express 來作為資料庫引擎。然而,畢竟 SQL Express 只能使用於小網站,其功能無論如何都不能與 SQL Server 相比擬。那麼你要如何將資料庫轉移到 SQL Server 而非 SQL Express 呢...

我們知道, 從 ASP.NET 2.0 開始,我們可以使用內建而且現成的 Membership、Roles、Profile 等等功能。而且如果你使用 Visual Studio 進行開發時, 你可以利用 ASP.NET 組態工具來建立 app_data 資料夾下的 aspnetdb 資料庫,裡面就是上述功能所使用的資料庫檔案。

不過在上述情況中,你必須在本機上安裝有 SQL Express 來作為資料庫引擎。然而,畢竟 SQL Express 只能使用於小網站,其功能無論如何都不能與 SQL Server 相比擬。那麼你要如何將資料庫轉移到 SQL Server 而非 SQL Express 呢?

如果你只是希望使用 SQL Server 取代 SQL Express 的話,那就非常容易了。但如果你要使用其它的資料庫,例如 Oracle 或 Access,那麼你必須可能必須自訂 Provider,其過程就不那麼容易,而且也不在本文所涵蓋的範圍之內。如果你有興趣,可以參考「[How Do I:] Create a Custom Membership Provider?」(附影音教學)。

要使用 SQL Server 取代 SQL Express 以作為 Membership、Roles、Profiles 等內建功能的資料庫,總共只有兩個簡單的步驟,詳述如下。

第一步,請執行 aspnet_regsql.exe (位於 C:\Windows\Microsoft.NET\Framework\v2.0.50727\ 或 C:\Windows\Microsoft.NET\Framework64\v2.0.50727\ 或類似的子目錄下),它會啟動一個精靈,幫你在 SQL Server 中建立所需的資料庫。你要做的事情很單純,就是輸入連線方式,指定資料庫名稱(不需取名為 ASPNETDB,可以是任何名稱),接著,它會幫你把資料庫建立起來。當然,你最好另外設定該資料庫的各種權限,我想這就不用多說了吧。

第二步,你必須在網站中的 Web.config 檔案中加上必要的連線字串(請參考以下範例; 實際寫法必須看你資料庫的設定)。請注意,LocalSqlServer 這個字是固定的,不能改它。

<connectionStrings>
   ...
   <remove name="LocalSqlServer" />
   <add name="LocalSqlServer" connectionString="Data Source=你的資料庫伺服器; 
Initial Catalog=你的資料庫名稱; Persist Security Info=True; User ID=YourId; 
Password=YourPassword; Pooling=True" providerName="System.Data.SqlClient"/>
</connectionStrings>

現在,你已經可以使用這個位於 SQL Server 上的資料庫以及 ASP.NET 2.0 內建的各項功能,而且可以使用 ASP.NET 組態工具以接續其它的設定了。

如果你使用 ASP.NET 2.0, 請記得 <remove name="LocalSqlServer" /> 這一行絕對不能省略,否則將會發生許多奇怪的錯誤。但如果你使用 4.0 版, 情況單純多了, 只要把原來的資料庫連結直接改成你的連結就行了, 如下例:

<add name="ApplicationServices" connectionString="Data Source=localhost; Initial Catalog=aspnetdb; Integrated Security=True" providerName="System.Data.SqlClient"/>

不過如果你使用 ASP.NET 4.0, 而且在程式執行時看到 Login failed for "IIS AppPool\ASP.NET v4.0" 這種錯誤訊息的話, 表示你的資料庫權限並未設定妥當。你可以照以下的步驟試試:

1. 打開 SQL Server Management Studio, 連上你的 SQL Server 

2. 在「安全性」、「登入」選項之下, 新增一個名為「IIS AppPool\ASP.NET v4.0」的項目, 並且按下下方「確定」按鈕, 你會看到該項目出現在其它項目之下

3. 雙擊滑鼠以打開剛才的「IIS AppPool\ASP.NET v4.0」的項目, 在「伺服器角色」中勾選「dbcreator」

4. 承上, 在同一層選單的「使用者對應」選項中, 在右邊「已對應到此登入的使用者」列表中, 選擇「aspnetdb」 , 然後在下方「aspnet 的資料庫角色成員資格」列表中, 把所有 "aspnet" 開頭的所有項目予以勾選 (如下圖)。

SQL Management Studio Picture Capture


Dev 2Share @ 點部落