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

  • 23553
  • 0
  • 2011-07-10

摘要:技巧和訣竅: 如何上傳一個.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> 部分指向你的遠端主機資料庫的連接字串值。之後,你的應用就應該在遠端主機上正常工作了。

希望本文對你有所幫助,

Scott

附註:要閱讀我寫的其他的技巧,訣竅和Recipes文章的話,請訪問這個網頁