选择显示字体大小

使用sql-dmo备份数据库并进行校验

本文谈论如何用sql-dmo创建数据库备份和校验的asp应用。

============================================================

概述
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数据库
<&#37;
  dim srv
  set srv = server.createobject("sqldmo.sqlserver")
  srv.logintimeout = 15
  srv.connect "servername", "username", "password"
&#37;>

这里通过代入用户名和口令来连接sql server数据库。如果要使用nt的身份认证,就将它的loginsecure属性设为真(true),忽略代入的用户名和口令,而使用nt的注册信息。

sqldmo.database
列出服务器中的数据库。在本文示例中,对列出的数据库进行备份。下面的代码将服务器中的数据库列于下拉菜单:
<&#37;
  dim srv
  dim objdb
  set srv = server.createobject("sqldmo.sqlserver")
  srv.logintimeout = 15
  srv.connect "servername", "username", "password"
  set objdb = server.createobject("sqldmo.database")
&#37;>
 <select name="fdatabase">

<&#37;
  for each objdb in srv.databases
    if objdb.systemobject = false then
&#37;>
  <option><&#37;=objdb.name&#37;></option>
<&#37;
    end if
  next
&#37;>
 </select>

sqldmo.backupdevice
列出服务器上安装的备份装置。我建议使用备份装置来备份数据库。因为这样可以使用sql-dmo的校验功能来校验备份情况。下面的代码列出服务器上的备份装置:
<&#37;
  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
&#37;>

sqldmo.backup
这就是我们要用到的备份核心对象。它有许多属性,让我们作到与企业版sql管理器一样水平的备份。先讨论一下本文示例用到的属性。

backupsetname - 备份文件名。
database - 要备份的数据库
action - 全部或增量备份。还有其他选项,不过示例中只用到这二个。
backupsetdescription - 备份说明。
files - 文件备份选项。标明备份文件的路径和名字,如:c:\pubs.bak。使用文件备份时,下面的备份装置名要设置为空。
devices - 服务器上的备份装置。如果使用备份装置,上面的文件备份选项要设置为空。
truncatelog - 备份日志选项。其选项有:
 nolog - 不备份交易日志。
 notruncate - 备份交易日志。日志里提供时间标记。
 truncate - 备份交易日志,但不保留交易纪录。
initialize - 如设置为真(true),该备份装置将取代其他备份媒介而成为首选。


以下是示例中的backup.asp文件:

<&#37;@ language=vbscript &#37;>
<html>
<body>
<!--contains all the login information -->
<!--#include file=login.asp -->
<&#37;
  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
&#37;>
<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文件代码,它列出备份装置名字并提供最近备份的有关信息。

<&#37;@ language=vbscript &#37;>
<html>
<body>
<!--login information -->
<!--#include file=login.asp-->
<p>
<&#37;
  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&#37;>
           <b><&#37;=objresults.columnname(xcount)&#37;></b>:
           <&#37;=objresults.getcolumnstring(icount,xcount)&#37;><br>
          <&#37;next &#37;>
          <hr>
        <&#37;next &#37;>
     <&#37;end if&#37;>
   <&#37;next&#37;>
<&#37;
 srv.disconnect
 set srv = nothing
 set objdevice = nothing
 set objresults = nothing
&#37;>
</body>
</html>

readbackupheader方法返回queryresults对象。用其rows属性可以得到备份的纪录数。然后对每行纪录作列信息搜索。


其他功能
sql-dmo还提供远程备份和恢复功能。本文没有涉及数据库恢复,但sql-dmo有很强的恢复功能。

本文附件:

http://www.chinaok.net/down/200204250401420.zip


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons