本文描述Visual Studio 2005中的基於檔案的資料庫方式和設計器如何建立和使用這些資料庫,具體內容包括:Visual Web Developer和資料、本地和伺服器資料庫,建立本機資料庫、綁定到本機資料庫、部署本機資料庫。
VWD2005中包含了SQL Server 2005 Express Edition,它是SQL Server 2005的一個免費版本,它的目標使用者是那些希望用簡單的資料庫解決方案來建立應用程式的非專業的或狂熱的開發人員。由於SQL Server Express支援完整的SQL Server編程模型,例如SQLCLR、T-SQL、預存程序、視圖、觸發器和XML資料類型,你可以使用SQL Server Express來瞭解這些技術,並且確保自己的應用程式可以運行在更高層次的平台上(例如SQL Server企業版)。SQL Server Express很容易下載和安裝(它小於36MB),Visual Studio 2005和Visual Web Developer 2005也包括了它。
Visual Studio包含了用於資料庫管理的工具,例如資料庫瀏覽器(Database Explorer)和查詢構造器(Query Builder),你可以使用它們來管理SQL Server Express資料庫。Visual Studio還支援一種新的基於檔案的資料庫,用於建立SQL Server Express資料庫並把它作為項目的一部分。同時,Visual Studio 2005 和SQL Server 2005 Express為建立和部署資料驅動的Web應用程式提供了完整的解決方案,包括下面一些特性:
◆資料庫專案資料項目
◆本機資料庫串連
◆資料庫瀏覽器管理
◆相對路徑連接字串
◆XCopy部署支援
◆整合的調試支援
本文描述Visual Studio 2005中的基於檔案的資料庫方式和設計器如何建立和使用這些資料庫。
Visual Web Developer和資料
Visual Web Developer為Web應用程式使用資料庫提供了大量的工具。你可以使用資料庫瀏覽器輕易地串連到資料庫並建立或查看資料庫圖表或大綱(schema)。你還可以使用查詢構造器對話方塊和查詢結果表格來查詢資料庫和進行資料填充。建立新資料庫(使用本地檔案)也是作為項目資料項目提供的。
一旦在Visual Web Developer中串連了資料庫,就可以把資料庫表直接拖放到頁面上,以建立資料繫結的GridView控制項。Visual Web Developer自動地建立一個關聯的資料來源控制項,並根據資料表來配置它的選擇、更新、插入和刪除操作。這種快捷操作為你節省了手動建立資料來源所需的大量工作,你也可以輕易地根據需要,用適合的資料繫結控制項代替GridView。
本地和伺服器資料庫
你可能已經熟悉了基於伺服器的資料庫和連接字串。在這種情況下,資料庫伺服器(例如SQL Server 2005)把資料庫名稱與伺服器所維護的資料庫檔案相關聯。你可以通過指定伺服器名稱、資料庫名稱和憑證來串連到基於伺服器的資料庫,例如:
"server=(local)\SQLExpress;database=Pubs;Integrated Security=true"
但是,Visual Studio 2005還支援本機資料庫的概念,它是添加到當前Web應用程式的App_Data目錄中的一個檔案。在App_Data目錄中儲存資料檔案是安全的,因為這個目錄中的內容永遠不會響應使用者的請求。這個目錄也是儲存XML檔案和其它資料存放區的推薦位置。本地的SQL Server Express資料庫帶有.MDF副檔名(例如"MyDatabase.MDF"),它是SQL Server支援的標準檔案格式。當串連到伺服器的時候,資料庫還有一個關聯的記錄檔(例如"MyDatabase_log.LDF")。資料庫檔案和記錄檔的位置必須在一起。
我們可以通過使用相對路徑連接字串把本地檔案資料庫自動地附加到SQL Server Express。相對路徑確保了應用程式遷移到任何其它地方的時候都不會中斷資料庫連接。Web應用程式中的相對路徑連接字串如下所示:
"server=(local)\SQLExpress;AttachDbFileName=|DataDirectory|
MyDatabase.mdf;Integrated Security=true;User Instance=true"
上面的連接字串還有兩個額外的屬性。AttachDbFileName屬性指定串連開啟的時候動態附加到伺服器上的資料庫檔案的位置。儘管這個屬性可以接受資料庫的完整路徑(例如使用|DataDirectory|文法),但是在運行時這個路徑會被應用程式的App_Data目錄所代替。這也保證了應用程式遷移到其它位置的時候串連不會中斷。第二個屬性是User Instance=true,它指定SQL Server Express附加資料庫的方式。在這種情況下,SQL Server Express為了把資料庫附加到新的執行個體,建立一個新的進程,在開啟串連的使用者身份下運行。在ASP.NET應用程式中,這個使用者是本地的ASPNET帳號或預設的Network Service,這依賴於作業系統。為了安全地附加非系統管理員帳號(例如ASP.NET帳號)提供的資料庫檔案,建立一個獨立的SQL Server使用者執行個體是必要的。
請注意:由於在預設情況下,所有的ASP.NET應用程式運行在同一個進程下,因此所有的應用程式會把本機資料庫附加到同一個SQL Server Express執行個體。這意味著不管應用程式最初附加的資料庫是哪一個,所有的應用程式對附加到這個執行個體的所有資料庫都擁有相同的存取權限。為了隔離不同的應用程式,你必須讓每個應用程式運行在不同的背景工作處理序或應用程式集區(在IIS 6中)中。由於這個原因,本地SQL Server資料庫主要是為了方便開發,而不是用於代替共用主機環境下的基於伺服器的資料庫。
另外一個要點是,不允許兩個使用者同時串連到一個本機資料庫。在Visual Studio中設計應用程式的時候,設計器自動地釋放串連,以保證Visual Studio和ASP.NET能夠共用資料庫檔案(例如在設計器中調試運行中的應用程式)。