北京北大青鳥學校講解:本地和服務(wù)器數(shù)據(jù)庫

上一篇文章中,北京北大青鳥學校學術(shù)老師介紹了Visual Web Developer和數(shù)據(jù),這篇內(nèi)容將介紹本地和服務(wù)器數(shù)據(jù)庫。

北京北大青鳥學校學術(shù)老師介紹,我們已經(jīng)熟悉了基于服務(wù)器的數(shù)據(jù)庫和連接字符串。在這種情況下,數(shù)據(jù)庫服務(wù)器(例如SQL Server 2005)把數(shù)據(jù)庫名稱與服務(wù)器所維護的數(shù)據(jù)庫文件相關(guān)聯(lián)。我們可以通過指定服務(wù)器名稱、數(shù)據(jù)庫名稱和憑證來連接到基于服務(wù)器的數(shù)據(jù)庫,例如:

"server=(local)\SQLExpress;database=Pubs;Integrated Security=true"

但是,北京北大青鳥學校學術(shù)老師介紹Visual Studio 2005還支持本地數(shù)據(jù)庫的概念,它是添加到當前Web應(yīng)用程序的App_Data目錄中的一個文件。在App_Data目錄中存儲數(shù)據(jù)文件是安全的,因為這個目錄中的內(nèi)容永遠不會響應(yīng)用戶的請求。這個目錄也是存儲XML文件和其它數(shù)據(jù)存儲的推薦位置。本地的SQL Server Express數(shù)據(jù)庫帶有.MDF擴展名(例如"MyDatabase.MDF"),它是SQL Server支持的標準文件格式。當連接到服務(wù)器的時候,數(shù)據(jù)庫還有一個關(guān)聯(lián)的日志文件(例如"MyDatabase_log.LDF")。數(shù)據(jù)庫文件和日志文件的位置必須在一起。

北京北大青鳥學校學術(shù)老師介紹,我們可以通過使用相對路徑連接字符串把本地文件數(shù)據(jù)庫自動地附加到SQL Server Express。相對路徑確保了應(yīng)用程序遷移到任何其它地方的時候都不會中斷數(shù)據(jù)庫連接。Web應(yīng)用程序中的相對路徑連接字符串如下所示:

"server=(local)\SQLExpress;AttachDbFileName=|DataDirectory|MyDatabase.mdf;Integrated Security=true;User Instance=true"

上面的連接字符串還有兩個額外的屬性。AttachDbFileName屬性指定連接打開的時候動態(tài)附加到服務(wù)器上的數(shù)據(jù)庫文件的位置。盡管這個屬性可以接受數(shù)據(jù)庫的完整路徑(例如使用|DataDirectory|語法),但是在運行時這個路徑會被應(yīng)用程序的App_Data目錄所代替。這也保證了應(yīng)用程序遷移到其它位置的時候連接不會中斷。第二個屬性是User Instance=true,它指定SQL Server Express附加數(shù)據(jù)庫的方式。在這種情況下,SQL Server Express為了把數(shù)據(jù)庫附加到新的實例,建立一個新的進程,在打開連接的用戶身份下運行。在ASP.NET應(yīng)用程序中,這個用戶是本地的ASPNET 帳號或默認的Network Service,這依賴于操作系統(tǒng)。為了安全地附加非系統(tǒng)管理員帳號(例如ASP.NET帳號)提供的數(shù)據(jù)庫文件,建立一個獨立的SQL Server用戶實例是必要的。

北京北大青鳥學校提醒:由于在默認情況下,所有的ASP.NET應(yīng)用程序運行在同一個進程下,因此所有的應(yīng)用程序會把本地數(shù)據(jù)庫附加到同一個SQL Server Express實例。這意味著不管應(yīng)用程序最初附加的數(shù)據(jù)庫是哪一個,所有的應(yīng)用程序?qū)Ω郊拥竭@個實例的所有數(shù)據(jù)庫都擁有相同的訪問權(quán)限。為了隔離不同的應(yīng)用程序,你必須讓每個應(yīng)用程序運行在不同的工作進程或應(yīng)用程序池(在IIS 6中)中。由于這個原因,本地SQL Server數(shù)據(jù)庫主要是為了方便開發(fā),而不是用于代替共享主機環(huán)境下的基于服務(wù)器的數(shù)據(jù)庫。

此外,北京北大青鳥學校還要提醒一點,不允許兩個用戶同時連接到一個本地數(shù)據(jù)庫。在Visual Studio中設(shè)計應(yīng)用程序的時候,設(shè)計器自動地釋放連接,以保證Visual Studio和ASP.NET能夠共享數(shù)據(jù)庫文件(例如在設(shè)計器中調(diào)試運行中的應(yīng)用程序)。

北大青鳥網(wǎng)上報名
北大青鳥招生簡章