仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 742|回复: 9
打印 上一主题 下一主题

[学习教程] MSSQL编程:利用SQL-DMO备份数据库并举行校验

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-16 22:24:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
MySQL这个名字是怎么来的已经不清楚了。基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQLAB创始人之一的的女儿也叫My。备份|数据|数据库
本文议论怎样用SQL-DMO创立数据库备份和校验的ASP使用。

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

概述
SQL散布式办理工具(SQLDistributedManagementobjects,SQL-DMO)为开辟者供应了利用程序和剧本言语实行一般义务的办法,从而扩大了SQLServer功效。本文议论怎样用SQL-DMO创立数据库备份和校验的ASP使用。

条件
你必要有SQLServer数据库备份的相干常识。别的还要在global.asa文件中到场SQL-DMO库的援用。以下是SQLServer2000的援用:
<!--METADATATYPE="TypeLib"NAME="MicrosoftSQLDMOObjectLibrary"UUID="{10010001-E260-11CF-AE68-00AA004A34D5}"VERSION="8.0"-->

本文示例代码合用于SQL7.0,MSDE,和SQLServer2000。

喜与忧
利用SQL-DMO工具让人且喜且忧。它供应了十分丰厚的功效,以致于不知该怎样利用。本文只会商示例触及的工具属性和办法。你能够在SQLServer在线教授教养上找到很多相干信息。本文开端能够下载本文示例源代码。

SQLDMO.SQLServer
代码看上往挺眼生。它用于毗连SQLServer数据库:
<%
Dimsrv
Setsrv=Server.CreateObject("SQLDMO.SQLServer")
srv.LoginTimeout=15
srv.Connect"servername","username","password"
%>

这里经由过程代进用户名和口令来毗连SQLServer数据库。假如要利用NT的身份认证,就将它的LoginSecure属性设为真(TRUE),疏忽代进的用户名和口令,而利用NT的注册信息。

SQLDMO.Database
列出服务器中的数据库。在本文示例中,对列出的数据库举行备份。上面的代码将服务器中的数据库列于下拉菜单:
<%
Dimsrv
DimobjDB
Setsrv=Server.CreateObject("SQLDMO.SQLServer")
srv.LoginTimeout=15
srv.Connect"servername","username","password"
SetobjDB=Server.CreateObject("SQLDMO.Database")
%>
<SELECTname="fdatabase">

<%
ForEachobjDBInsrv.Databases
IfobjDB.SystemObject=FalseThen
%>
<OPTION><%=objDB.Name%></OPTION>
<%
EndIf
Next
%>
</SELECT>

SQLDMO.BackupDevice
列出服务器上安装的备份安装。我倡议利用备份安装来备份数据库。由于如许可使用SQL-DMO的校验功效来校验备份情形。上面的代码列出服务器上的备份安装:
<%
Dimsrv
DimobjDevice
Setsrv=Server.CreateObject("SQLDMO.SQLServer")
srv.LoginTimeout=15
srv.Connect"servername","username","password"
SetobjDevice=Server.CreateObject("SQLDMO.BackupDevice")

ForEachobjDeviceInsrv.BackupDevices
Response.WriteobjDevice.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>
<!--containsallthelogininformation-->
<!--#includefile=login.asp-->
<%
DimobjBackup
创立备份工具
setobjBackup=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.SQLBackupsrv
断开与服务器的毗连
srv.disconnect
开释
setsrv=nothing
setobjBackup=Nothing
%>
<P>
Thebackupwasstarted,usethe<AHREF="devices.asp">verify</A>
optiontoseeifitcompletedsuccessfully.
<AHREF="default.asp">Clickhere</A>toreturn.
</P>
</BODY>
</HTML>


备份校验
假如用VB或C++编程,能够用事务触发来校验备份历程,但在ASP中不可。我们用SQLDMO.BackupDevice工具的ReadBackupHeader办法来确认备份是不是乐成。
上面是verify.asp文件代码,它列出备份安装名字并供应比来备份的有关信息。

<%@Language=VBScript%>
<HTML>
<BODY>
<!--Logininformation-->
<!--#includefile=login.asp-->
<P>
<%
DimobjDevice
DimobjResults
DimiCount
DimxCount
创立备份安装工具
SetobjDevice=Server.CreateObject("SQLDMO.BackupDevice")
轮回直到找到婚配的安装
ForEachobjDeviceInsrv.BackupDevices
IfobjDevice.Name=Request("fname")Then
找到婚配安装,入手下手读取了局
SetobjResults=objDevice.ReadBackupHeader
ForiCount=1ToobjResults.Rows
ForxCount=1ToobjResults.Columns%>
<B><%=objResults.ColumnName(xcount)%></B>:
<%=objResults.GetColumnString(icount,xcount)%><br>
<%Next%>
<HR>
<%Next%>
<%EndIf%>
<%Next%>
<%
srv.Disconnect
setsrv=nothing
setobjDevice=nothing
setobjResults=nothing
%>
</BODY>
</HTML>

ReadBackupHeader办法前往QueryResults工具。用其Rows属性能够失掉备份的记录数。然后对每行记录作列信息搜刮。


其他功效
SQL-DMO还供应远程备份和恢复功效。本文没有触及数据库恢复,但SQL-DMO有很强的恢复功效。


本文附件:

http://www.chinaok.net/down/200204250401420.zip
为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
只想知道 该用户已被删除
沙发
发表于 2015-1-19 11:06:23 | 只看该作者
连做梦都在想页面结构是怎么样的,绝非虚言
海妖 该用户已被删除
板凳
发表于 2015-1-25 15:15:43 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
飘灵儿 该用户已被删除
地板
发表于 2015-2-8 17:46:01 | 只看该作者
代替了原来VB式的错误判断。比Oracle高级不少。
老尸 该用户已被删除
5#
发表于 2015-2-25 21:57:08 | 只看该作者
多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。
飘飘悠悠 该用户已被删除
6#
发表于 2015-3-8 07:43:57 | 只看该作者
习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
7#
 楼主| 发表于 2015-3-15 21:23:29 | 只看该作者
记得在最开始使用2k的时候就要用到这个功能,可惜2k没有,现在有了作解决方案的朋友会很高兴吧。
柔情似水 该用户已被删除
8#
发表于 2015-3-22 05:07:55 | 只看该作者
大侠们有推荐的书籍和学习方法写下吧。
蒙在股里 该用户已被删除
9#
发表于 2015-3-22 05:07:56 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
乐观 该用户已被删除
10#
发表于 2015-3-22 05:07:56 | 只看该作者
SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-20 08:12

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表