Author:
scottgu
【原文發表日期】 Thursday, January 11, 2007 12:20 AM
上個月 (英文),我討論了新的(免費的)資料庫發布嚮導,它是設計來充分簡化在web主機環境中上傳和部署 SQL Express 和 SQL Server資料庫的。
在 第一個關於資料庫發布的貼子 (英文)裡 ,我示範了你如何可以使用資料庫發布嚮導自動產生 .SQL 安裝檔案,該檔案中將包含重建你的資料庫資料定義(表,視圖,預存程序,觸發器,全文索引目錄等等)及以你原來資料庫中同樣的資料填充新資料庫所需的指令碼。這提供了一個極其容易的方法來構造在另外一個伺服器上完全複製你的資料庫的 .SQL 指令碼:
在我以前的文章裡,我提到主機供應商經常提供線上sql管理工具,你可以用它來開啟/運行你新產生的 .SQL 檔案,或者會提供SQL查詢工具允許你拷貝/粘貼 .SQL 檔案的內容到一個查詢執行視窗來運行這些SQL語句。但不幸的是,並不是所有的主機供應商支援類似的工具。即使在那些支援類似工具的主機供應商那裡,你也會遇上一些情形,譬如你產生的 .SQL 檔案是如此之大,把它拷貝/粘貼進一個文字框是行不通的(提交一個 200M 位元組內容的表單一般都會造成逾時)。
這個文章示範了把 .SQL 檔案部署到遠程主機環境中去的另外一個方法,這個方法不要求你的主機供應商在後端為你配置和安裝任何東西。
不通過使用管理工具把SQL資料庫部署到遠程SQL伺服器的步驟
下面是把一個本機資料庫不通過使用任何管理工具就部署到遠程主機上去的步驟:
第一步:產生一個包含資料定義和資料的 .SQL檔案
遠程部署資料庫到主機環境的第一步是產生一個 .SQL 檔案,內含你資料庫的資料定義和資料。按我的 第一個關於資料庫發布的部落格文章 (英文)裡的步驟,來瞭解如何為 SQL Express 或 SQL Server資料庫產生一個 .SQL 檔案。
第二步: 把 .SQL 檔案FTP到你的遠程主機上去
產生 .SQL 檔案之後,使用FTP或者其他檔案傳輸機制將它上傳到你的遠程主機上去。最好是把這個檔案拷貝到一個遠端使用者不易訪問的受保護的場所。一個建議,給這個檔案一個隨機的名字,然後將它上傳到 /app_data 檔案夾,因為在預設情形下,該檔案裡的內容是受保護的。
用ftp來上傳這個檔案的好處是,它不會強迫你限制 .SQL 檔案的大小。有必要的話,該檔案的大小可達幾百個M位元組之多。
第三步: 下載 RunSQL.aspx 輔助頁面
訪問這個頁面,下載其上串連的 RunSQL.aspx 檔案。
runsql.aspx檔案是個asp.net頁面,是sql Server產品組編寫的,支援2個參數: 1) .SQL 檔案的名字, 以及 2) 資料庫的連接字串。運行RunSQL.aspx頁面,它會開啟指定的 .SQL 檔案,在通過連接字串指定的資料庫中迭代執行檔案中的每一句SQL語句。這就會把 .SQL 檔案中定義的資料庫配備到遠端目標資料庫中去。
第四步: 編輯 RunSQL.aspx 輔助頁面
在本地開啟/編輯runsql.aspx檔案,設定好你的 .SQL 檔案名稱字,以及提供與你的主機供應商給予你的SQL資料庫對應的連接字串:
把 <<YOUR_SCRIPTFILE>> 標記以及相關的連接字串標記替換成你主機環境中的正確配置值。注意,除非你知道你的 .SQL 檔案的完整路徑,你大概需要使用ASP.NET中的Server.MapPath(fileName)方法來推算出你應用中與 .SQL 檔案的相對路徑相對應的絕對路徑。譬如:
// Filename of the T-SQL file you want to run
string fileName = Server.MapPath("personal.SQL");
// Connection string to the server you want to execute against
string connectionString = @"Server=server123;User ID=user123;Password=password123;Initial Catalog=MyDBName123";
// Timeout of batches (in seconds)
int timeout = 600;
第五步: 把 RunSQL.aspx 輔助頁面上傳到你的遠程主機
完成變更檔名和連接字串值之後,把runsql.aspx檔案上傳到你的遠程主機上去(譬如,使用ftp)。
為安全的原因,我建議你在上傳時給該檔案一個隨機的檔案名稱,這樣,別人就不容易找到這個檔案並執行它了。
第六步: 用瀏覽器訪問 RunSQL.aspx 輔助頁面
上傳後,通過瀏覽器訪問遠端runsql.aspx網頁,這會導致你遠程伺服器上的網頁分析 .SQL 檔案,執行其中的所有SQL語句。 因為 .SQL 檔案包含了重建資料庫所需的資料庫資料定義和資料填充的所有語句,網頁執行完畢後,你就將一個一模一樣的資料庫部署到你的遠程主機上了:
第七步: 刪除 RunSQL.aspx 和 .SQL 檔案
運行完你的 .SQL 指令碼之後,把RunSQL.aspx網頁和 .SQL 檔案同時從你的遠程主機伺服器上刪除。
為安全的原因,你不想要任何其他人能夠遠端存取RunSQL.aspx網頁,因為它也許會重建你的資料庫,導致資料丟失。
第八步: 更新你應用的Web.Config檔案來指向主機環境中的資料庫
剩下的最後一步是更新你的web.config檔案的 <connectionStrings> 部分指向你的遠程主機資料庫的連接字串值。之後,你的應用就應該在遠程主機上正常工作了。
希望本文對你有所協助,
scott
附註:要閱讀我寫的其他的技巧,訣竅和recipes文章的話,請訪問這個網頁。