巧用SQL-DMO創建備份及校驗的ASP應用_ASP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:ASP 3.0高級編程(四十五)
      異步執行是指在后臺檢索數據,可以在全部數據返回之前在Web頁面上使用已經得到的數據。雖然可能需要的是全部的數據,但異步工作至少可提前開始處理數據。也可讓用戶先看到某些內容,這使得Web站

      概述

      SQL分布式管理對象(SQL Distributed Management objects, SQL-DMO)為開發者提供了使用程序和腳本語言執行普通任務的方法,從而擴展了SQL Server功能。本文談論如何巧妙的利用SQL-DMO創建數據庫備份和校驗的ASP應用。

      前提

      你需要有SQL Server數據庫備份的相關知識。另外還要在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有很強的恢復功能。

      分享:基礎開發入門級:JSP與ASP的比較
      從微軟推出了ASP(ActiveServerPage)后,它以其強大的功能,簡單易學的特點而受到廣大WEB開發人員的喜歡。但是它卻有微軟產品的通病,只能在Windows平臺下使用,雖然它可以通過增加控件而在LINUX

      來源:模板無憂//所屬分類:ASP教程/更新時間:2008-08-22
      相關ASP教程