巧用SQL-DMO建立備份及校正的ASP應用

來源:互聯網
上載者:User
sql|備份|建立

概述

SQL分散式管理物件(SQL Distributed Management objects, SQL-DMO)為開發人員提供了使用程式和指令碼語言執行普通任務的方法,從而擴充了SQL Server功能。本文談論如何巧妙的利用SQL-DMO建立Database Backup和校正的ASP應用。

前提

你需要有SQL ServerDatabase Backup的相關知識。另外還要在global.asa檔案中加入SQL-DMO庫的引用。以下是SQL Server 2000的引用:

<!--METADATA TYPE="TypeLib" NAME="Microsoft SQLDMO Object Library" UUID="{10010001-E260-11CF-AE68-00AA004A34D5}" VERSION="8.0"-->

本文範例程式碼適用於SQL 7.0, MSDE, 和 SQL Server 2000。

喜與憂

使用SQL-DMO對象讓人且喜且憂。它提供了非常豐富的功能,以至於不知該如何使用。本文只討論樣本涉及的對象屬性和方法。你可以在SQL Server線上教學上找到許多相關資訊。

SQLDMO.SQLServer

用於串連SQL Server資料庫:

<%  Dim srv  Set srv = Server.CreateObject("SQLDMO.SQLServer")  srv.LoginTimeout = 15  srv.Connect "servername", "username", "password"%>

這裡通過代入使用者名稱和口令來串連SQL Server資料庫。如果要使用NT的身份認證,就將它的LoginSecure屬性設為真(TRUE),忽略代入的使用者名稱和口令,而使用NT的註冊資訊。

SQLDMO.Database

列出伺服器中的資料庫。在本文樣本中,對列出的資料庫進行備份。下面的代碼將伺服器中的資料庫列於下拉式功能表:

<%  Dim srv  Dim objDB  Set srv = Server.CreateObject("SQLDMO.SQLServer")  srv.LoginTimeout = 15   srv.Connect "servername", "username", "password"  Set objDB = Server.CreateObject("SQLDMO.Database")%> <SELECT name="fdatabase"><%  For Each objDB In srv.Databases    If objDB.SystemObject = False Then%>  <OPTION><%=objDB.Name%></OPTION><%    End If  Next%> </SELECT>

SQLDMO.BackupDevice

列出伺服器上安裝的備份裝置。我建議使用備份裝置來備份資料庫。因為這樣可以使用SQL-DMO的校正功能來校正備份情況。下面的代碼列出伺服器上的備份裝置:

<%  Dim srv  Dim objDevice  Set srv = Server.CreateObject("SQLDMO.SQLServer")  srv.LoginTimeout = 15   srv.Connect "servername", "username", "password"  Set objDevice = Server.CreateObject("SQLDMO.BackupDevice")   For Each objDevice In srv.BackupDevices    Response.Write objDevice.Name + "<BR>"  Next%>

SQLDMO.Backup

這就是我們要用到的備份核心對象。它有許多屬性,讓我們作到與企業版SQL管理器一樣水平的備份。先討論一下本文樣本用到的屬性。

BackupSetName - 備份檔案名。

Database - 要備份的資料庫。

Action - 全部或增量備份。還有其他選項,不過樣本中只用到這二個。

BackupSetDescription - 備份說明。

Files - 檔案備份選項。標明備份檔案的路徑和名字,如:C:\pubs.bak。使用檔案備份時,下面的備份裝置名要設定為空白。

Devices - 伺服器上的備份裝置。如果使用備份裝置,上面的檔案備份選項要設定為空白。

TruncateLog - 備份日誌選項。其選項有:

NoLog - 不備份交易日誌。

NoTruncate - 備份交易日誌。日誌裡提供時間標記。

Truncate - 備份交易日誌,但不保留交易紀錄。

Initialize - 如設定為真(True),該備份裝置將取代其他備份媒介而成為首選。

以下是樣本中的backup.asp檔案:

<%@ Language=VBScript %><HTML><BODY><!--contains all the login information --><!--#include file=login.asp --><%  Dim objBackup   '建立備份對象  set objBackup      = Server.CreateObject("SQLDMO.Backup")  '設定屬性  objBackup.BackupSetName  = Request("fname")  objBackup.Database       = Request("fdatabase")  objBackup.Action         = Request("fAction")  objBackup.BackupSetDescription = Request("fdescription")  objBackup.Files        = Request("fbackupfile")  objBackup.Devices      = Request("fdevice")  objBackup.TruncateLog  = Request("flog")  objBackup.Initialize   = Request("finit")  '備份資料庫  objBackup.SQLBackup srv  '斷開與伺服器的串連  srv.disconnect  '釋放  set srv = nothing  set objBackup = Nothing%><P>The backup was started, use the <A HREF="devices.asp">verify</A>option to see if it completed successfully.<A HREF="default.asp">Click here</A> to return.</P></BODY></HTML>

備份校正

如果用VB或C++編程,可以用事件觸發來校正備份過程,但在ASP中不行。我們用SQLDMO.BackupDevice對象的ReadBackupHeader方法來確認備份是否成功。

下面是verify.asp檔案代碼,它列出備份裝置名字並提供最近備份的有關資訊。

<%@ Language=VBScript %><HTML><BODY><!--Login information --><!--#include file=login.asp--><P><%  Dim objDevice  Dim objResults  Dim iCount  Dim xCount  '建立備份裝置對象  Set objDevice  = Server.CreateObject("SQLDMO.BackupDevice")    '迴圈直到找到匹配的裝置    For Each objDevice In srv.BackupDevices      If objDevice.Name = Request("fname") Then        '找到匹配裝置,開始讀取結果        Set objResults = objDevice.ReadBackupHeader        For iCount = 1 To objResults.Rows          For xCount = 1 To objResults.Columns%>           <B><%=objResults.ColumnName(xcount)%></B>:            <%=objResults.GetColumnString(icount,xcount)%><br>          <%Next %>          <HR>        <%Next %>     <%End If%>   <%Next%><% srv.Disconnect set srv = nothing set objDevice = nothing set objResults = nothing%></BODY></HTML>

ReadBackupHeader方法返回QueryResults對象。用其Rows屬性可以得到備份的紀錄數。然後對每行紀錄作列資訊搜尋。

其他功能

SQL-DMO還提供遠程備份和恢複功能。本文沒有涉及資料庫恢複,但SQL-DMO有很強的恢複功能。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.