你開發完了一個得意的ASP.NET應用,所有的東西都測試過了而且在你本機上一切工作都正常,充分利用了ASP.NET 2.0中的成員,角色和用戶信息等新功能,萬事俱備,准備將它發布到一個遠程主機環境,跟整個世界分享這個應用。
將.aspx文件和編譯的程序集拷貝到遠程系統是非常容易的,只要使用FTP或者直接向上拷貝文件即可。但許多開發人員面臨的挑戰是,如何在遠程主機的站點上架設和重建數據庫內容,包括數據定義和數據本身。不幸的是,過去以來一直沒有極其簡單的方式來達成這個目的。
SQL Server產品組推出了新的 SQL Server Hosting Toolkit的發布候選版 ,這個工具包將使部署你的SQL解決方案到遠程主機環境容易之極。這個工具包允許你在本地操作SQL Express,SQL Server 2000,和 SQL Server 2005數據庫,然後把你的數據定義和數據輕松地遷移,安裝到一個共享的遠程主機SQL Server賬號上。
下面的內容將描述你可以如何開始使用這個工具包。
SQL Server Hosting Toolkit
SQL Server Hosting Toolkit可以免費獲取,同時發布的還有一個數據庫發布向導(Database Publishing Wizard),該向導支持2種數據庫主機部署場景:
1) 數據庫發布向導允許你指向一個你正在本機上操作的數據庫,然後自動生成一個.SQL腳本文件,該文件包含了在任何遠程系統上重建一個當前數據庫的完整拷貝所需的安裝邏輯。這個.SQL腳本包括了需要創建數據庫定義(表,視圖,存儲過程,觸發器,全文索引目錄,角色,規則等等,可在此處參考所有細節),以及把與你本地數據庫同樣的數據內容填充到新數據庫裡去的所有的東西(這類似於MySQL 的dump工具)。把這些安裝邏輯封裝在單個.SQL 文件的好處是,大多數主機供應商已經支持上傳 .SQL 文件到他們的主機環境,並且通過他們的管理控制面板運行這些腳本的能力。假定你現有一個支持這個功能的web主機供應商,你可以馬上開始使用數據庫發布向導來輕松地部署你的網站,而不需要主機供應商安裝或配置什麼東西。
2) 數據庫發布向導也允許你指向一個你正在本機上操作的數據庫,然後使用 web service 向你的遠程主機環境遷移和重建數據庫(而不用創建一個.SQL 文件或者使用主機供應商的管理控制面板運行這個文件)。不過,這個發布選項需要主機環境提供SQL發布web-service。 SQL Server Hosting Toolkit包含了一個免費的SQL發布web-service實現,我們將與主機供應商密切合作來部署這個web-service。
數據庫發布向導允許你在本地使用 SQL Express 或 SQL Server 2000/2005 ,然後在遠程主機環境中使用SQL 2000 或 SQL 2005。它不要求SQL服務器的版本是一樣的,所以,你可以在本地使用SQL Express 2005,然後上傳到主機環境中的SQL 2000服務器,而不用改動任何編碼。
數據庫發布向導也支持對內置的ASP.NET 2.0成員,角色管理,用戶信息和健康監測等數據定義的處理。許多人遇上問題,因為隨 ASP.NET一起發布的來建立這些數據定義的內置.SQL 腳本在安裝時(install-time)需要DBO權限,但很多主機供應商對此並不支持(注:腳本在運行時(runtime)不需要DBO權限,只是在安裝時(install time)才需要,但這有時會是個障礙,除非主機供應商願意為你安裝)。而在另一方面,數據庫發布向導在安裝ASP.NET 2.0成員,角色管理,用戶信息等數據定義和數據時,並不需要DBO權限,應該允許你,和使用數據庫發布向導部署其他數據庫一樣,輕松地部署 ASPNETDB數據表和存儲過程。
使用.SQL文件把SQL Express數據庫部署到一個SQL Server主機賬號上去
在接下來的幾周內,我將寫一系列的帖子示范如何使用SQL Server Hosting Toolkit中的種種功能。這系列中的第一個教程討論如何使用它來輕松地生成一個本地SQL Express數據庫的 .SQL 安裝文件,然後你可以將它拷貝到一個遠程主機賬號上,用它來重新建立一個 SQL Server 數據庫,為你的網站所用。
起始准備:下載和安裝數據庫發表向導
我們要做的第一步是確認我們安裝了SQL Hosting Toolkit中的數據庫發布向導。點擊這裡下載安裝。
數據庫發布向導既有圖形界面的向導,也有命令行工具。圖形界面的向導既可以單獨運行,也可以通過它向Visual Studio 2005 和 Visual Web Developer Express的解決方案管理器中添加的context-menu支持來運行。為本教程的目的,我們將使用後面這個解決方案管理器的集成方法,它使得發布極其容易。
第一步:創建一個使用本地SQL Express或SQL Server數據庫的ASP.NET網站
為方便這個演示,我們將使用隨VS 2005(VS) 和Visual Web Developer Express(VWD)而來的內置的Personal Starter Kit模板。為創建一個基於這個模板的新web項目,在VWD或VS中選擇文件->新網站,然後在新網站對話框中選擇Personal Starter Kit模板。在默認情形下,這個personal starter kit應用是配置使用SQL Express(這數據庫是免費的,可以在這裡下載)的。執行之後,如下圖所示:
在創建應用後,你可以在VWD/VS中選“網站”->“ASP.NET配置”菜單項來運行web管理工具,創建一個新的用戶,把該用戶添加到網站的“admin”角色中去。然後你就可以這個新的管理員用戶賬號登錄,試著上傳新的相片或者定制網站上現有的相片(注意,這麼做的話,相片的元數據以及原相片的二進制數據都是儲存在數據庫裡的):
上述步驟結束之後,我們將擁有2個SQL Express數據庫,安裝在我們項目的\app_data文件夾裡。其中一個SQL Express數據庫名為personal.mdf,內含特定於我們網站的數據表和存儲過程,譬如photo(相片)和album(相冊)表,以及基本的內容管理支持等。另外一個SQL Express數據庫名為aspnetdb.mdf,內含默認的ASP.NET 2.0成員,角色和用戶信息提供器的數據庫貯藏,被我們的應用用來做登錄和管理之用。
第二步:為我們的數據庫創建 .SQL 安裝腳本
至此,我們建立了新的應用和本地數據庫,向數據庫中添加了自定義數據,象新用戶賬號以及他們的角色成員,以及新的相片和相冊等,我們想要把這應用部署到一個遠程主機服務器上去。
我們要做的第一步是創建 .SQL 腳本文件,這些文件將允許我們在遠程主機賬號上自動重建完全一樣的數據庫定義和數據庫內容。我們將使用作為SQL Hosting Toolkit的一部分安裝在本機上的數據庫發布向導(Database Publishing Wizard)來做。