技巧和訣竅: 如何上傳一個.SQL文件到遠程主機並且執行它來部署一個SQL數據庫

原文地址】 Tip/Trick: How to upload a .SQL file to a Hoster and Execute it to Deploy a SQL Database
【原文發表日期】 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> 部分指向你的遠程主機數據庫的連接字符串值。之後,你的應用就應該在遠程主機上正常工作了。

希望本文對你有所幫助, 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章