如何用ASP程序来备份SQL数据库。呵呵呵呵~---》

no820824 2003-11-17 05:17:37
比如说SQL中有一个数据库,名为:test。

如何写一段ASP程序,运行后,来在线备份。

可以实现吗?
...全文
50 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
happymingnan 2003-11-18
  • 打赏
  • 举报
回复
学习
boboplayer 2003-11-17
  • 打赏
  • 举报
回复
把它存为一个ASP文件运行就OK了
<%

dim strDataBaseName,strUserName,strPwd,strServerName,strFoldName

strDataBaseName=trim(request("strDataBaseName"))
strUserName=trim(request("strUserName"))
strPwd=trim(request("strPwd"))
strServerName=trim(request("strServerName"))
strFoldName=trim(request("strFoldName"))

pCommand=trim(request("pCommand"))

if pCommand<>"" then
call BackupSqlDataBase(strDataBaseName,strUserName,strPwd,strServerName,strFoldName)
end if

function BackupSqlDataBase(strDataBaseName,strUserName,strPwd,strServerName,strFoldName)
dim dbconn
dim strConn

if strUserName="" then
strUserName="sa"
end if
if strServerName="" then
strServerName="(Local)"
end if

if strDataBaseName<>"" then
on error resume next
strConn="Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=" & strDataBaseName & ";Data Source=" & strServerName
strUid=strUserName
strPwd=strPwd

Set dbconn=Server.CreateObject("ADODB.CONNECTION")
dbconn.Open strConn,strUid,strPwd


if err.number<>0 then
Response.Write "<center>"
Response.Write "<font style='color:red;font-size:9pt'>"
Response.Write "请重新输入要备份数据库的信息!"
Response.Write "</font>"
Response.Write "</center>"
else
if strFoldName="" then
strFoldName="DataBackup"
end if

set objFs=server.CreateObject("scripting.FileSystemObject")
CurryFoldName=server.MapPath(".") & "\" & strFoldName
if objFs.FolderExists(CurryFoldName)=false then
objFs.CreateFolder CurryFoldName
end if

DataBaseName=strDataBaseName & year(date()) & month(date()) & day(date())
DataPathFileName=CurryFoldName & "\" & DataBaseName

if objFs.FolderExists(DataPathFileName & ".bak")=true then
objFs.DeleteFile DataPathFileName & ".bak"
end if


strSql="BACKUP DATABASE wjjweb TO disk='" & DataPathFileName & ".bak' with init "
dbconn.execute strSql
set dbconn=nothing

if err.number<>0 then
strMsg="数据库与WEB服务器不在同一台服务器,备份失败!"
if objFs.FolderExists(CurryFoldName)=true then
objFs.DeleteFolder CurryFoldName
end if
else
strMsg="恭喜您数据库备份成功!<font color=""red"">(路径:" & DataPathFileName & ".bak" & ")</font>"
end if
set objFs=nothing
Response.Write "<center style=""font-size:9pt"">"
Response.Write strMsg
Response.Write "</center>" & vbcrlf

end if
else
Response.Write "<center>"
Response.Write "<font style='color:red;font-size:9pt'>"
Response.Write "请重新输入要备份数据库的信息!"
Response.Write "</font>"
Response.Write "</center>"
end if
end function

%>
<html>
<head>
<title>SQL数据库备份</title>
</head>
<body>
<center>
<form action="" method="post" name="HdForm">
<table width="50%" border="0" style="BORDER-BOTTOM: deepskyblue 1px solid; BORDER-LEFT: deepskyblue 1px solid; BORDER-RIGHT: deepskyblue 1px solid; BORDER-TOP: deepskyblue 1px solid; FONT-SIZE: 9pt; HEIGHT: 154px; WIDTH:400px" cellPadding=0 cellSpacing=1>
<tr>
<td bgColor=lavenderblush align="right">数据库名:</td>
<td><input name="strDataBaseName" style="BORDER-BOTTOM: orange 1px solid; BORDER-LEFT: orange 1px solid; BORDER-RIGHT: orange 1px solid; BORDER-TOP: orange 1px solid; HEIGHT: 20px; WIDTH: 210px" ></td>
</tr>
<tr>
<td bgColor=lavenderblush align="right">数据库登录名:</td>
<td><input name="strUserName" style="BORDER-BOTTOM: orange 1px solid; BORDER-LEFT: orange 1px solid; BORDER-RIGHT: orange 1px solid; BORDER-TOP: orange 1px solid; HEIGHT: 20px; WIDTH: 210px" value="sa"></td>
</tr>
<tr>
<td bgColor=lavenderblush align="right">数据库登录密码:</td>
<td><input name="strPwd" style="BORDER-BOTTOM: orange 1px solid; BORDER-LEFT: orange 1px solid; BORDER-RIGHT: orange 1px solid; BORDER-TOP: orange 1px solid; HEIGHT: 20px; WIDTH: 210px"></td>
</tr>
<tr>
<td bgColor=lavenderblush align="right">服务器名:</td>
<td><input name="strServerName" style="BORDER-BOTTOM: orange 1px solid; BORDER-LEFT: orange 1px solid; BORDER-RIGHT: orange 1px solid; BORDER-TOP: orange 1px solid; HEIGHT: 20px; WIDTH: 210px" value="."></td>
</tr>
<tr>
<td bgColor=lavenderblush align="right">保存文件夹名:</td>
<td><input name="strFoldName" style="BORDER-BOTTOM: orange 1px solid; BORDER-LEFT: orange 1px solid; BORDER-RIGHT: orange 1px solid; BORDER-TOP: orange 1px solid; HEIGHT: 20px; WIDTH: 210px" value="DataBackup"></td>
</tr>
</table>
<table width="100%">
<tr>
<td align="center">
<input type="button" value="备份" name="button1" style="BACKGROUND-COLOR: whitesmoke; BORDER-BOTTOM: lightgrey 1px solid; BORDER-LEFT: lightgrey 1px solid;WIDTH: 69px" onclick="pSumbit()">
<input type="reset" value="取消" name="button2" style="BACKGROUND-COLOR: whitesmoke; BORDER-BOTTOM: lightgrey 1px solid; BORDER-LEFT: lightgrey 1px solid;WIDTH: 69px">
<input type="hidden" value="" name="pCommand">
</td>
</tr>
</table>
</form>
</center>
</body>
</html>
<script language="vbscript">
<!--
function pSumbit()
if trim(HdForm.strDataBaseName.value)="" then
alert("请输入要备份的数据库名!")
HdForm.strDataBaseName.focus()
exit function
end if
HdForm.pCommand.value="strBackup"
HdForm.submit()
end function
-->
</script>
boboplayer 2003-11-17
  • 打赏
  • 举报
回复
Jaron(唐伯虎点蚊香) ( )已经说的很详细了,要不给段代码给你
no820824 2003-11-17
  • 打赏
  • 举报
回复
to:Jaron(唐伯虎点蚊香)

这么短?

怎么和以前我在网上看到的不一样?
好象写了好长。

-------------------------------

<%@ Language=VBScript %>
<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<META NAME="GENERATOR" Content="Microsoft FrontPage 4.0">
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!--

Sub btnbak_onclick
if frmbak.txtsvr.value="" then
window.alert("'Server Name' is empty!")
frmbak.txtsvr.focus
exit sub
end if
if frmbak.txtuid.value="" then
window.alert("'Administrators' is empty!")
frmbak.txtuid.focus
exit sub
end if
if frmbak.txtdb.value="" then
window.alert("'Database' is empty!")
frmbak.txtdb.focus
exit sub
end if
if frmbak.txtto.value="" then
window.alert("'Backup To' is empty!")
frmbak.txtto.focus
exit sub
end if
frmbak.submit
End Sub

-->
</SCRIPT>
<link rel="stylesheet" href="../../sheets/B2Bstyle.css">
</HEAD>
<form action="backupdbsave.asp" method="post" id=frmbak name=frmbak>
<body class="bg_frame_up">
<p class=heading> Database --> Backup</p>
<P align=center>
<div align="center">
<center>
<table width="60%" cellpadding=1 cellspacing=1 border=0 align=center>
<tr>
<td class=TD_Mand_FN align="center" height="35" width="40%">Server Name:</td>
<td class=TD_Mand_F height="35" width="59%">
<INPUT id=txtsvr name=txtsvr size="20" style="font-family: Arial; font-size: 9pt"></td>
</tr>
<tr>
<td class=TD_Mand_FN align="center" height="35" width="40%">Administrators:</td>
<td class=TD_Mand_F height="35" width="59%">
<INPUT id=txtuid name=txtuid size="20" style="font-family: Arial; font-size: 9pt"></td>
</tr>
<tr>
<td class=TD_Mand_FN align="center" height="35" width="40%">Password:</td>
<td class=TD_Mand_F height="35" width="59%">
<INPUT id=txtpwd name=txtpwd type=password style="font-family: Arial; font-size: 9pt"></td>
</tr>
<tr>
<td class=TD_Mand_FN align="center" height="35" width="40%">Database:</td>
<td class=TD_Mand_F height="35" width="59%">
<p align="left">
<INPUT id=txtdb name=txtdb size="20" style="font-family: Arial; font-size: 9pt"></p>
</td>
</tr>

<td class=TD_Mand_FN align="center" height="35" width="40%">Backup To:<br>
<u>(Server Path)</u></td>
<td class=TD_Mand_F height="35" width="59%">
<input id=txtto name=txtto style="font-family: Arial; font-size: 9pt"></td>
</tr>
</table>
</center> </div>
<p align=center><input id=btnbak name=btnbak type=button value="Start Backup" style="font-family: Arial; font-size: 9pt"></p>
</body>
</form>
</HTML>


文件2:BackupDBSave.asp

<%@ Language=VBScript %>
<%
dim msvr,muid,mpwd,mdb,mto
msvr=Request.form("txtsvr")
muid=Request.form("txtuid")
mpwd=Request.form("txtpwd")
mdb=Request.form("txtdb")
mto=Request.form("txtto")
if mpwd="" then mpwd="''"

on error resume next
set dmosvr=server.CreateObject("SQLDMO.SQLServer")
dmosvr.connect msvr,muid,mpwd

if err.number>0 then Response.Redirect("http:backuperr.asp?err="&err.number)

mdevname="Backup_"&muid&"_"&mdb
set dmodev=server.CreateObject("SQLDMO.BackupDevice")
dmodev.name=mdevname
dmodev.type=2
dmodev.PhysicalLocation=mto
dmosvr.BackupDevices.Add dmodev

if err.number>0 then Response.Redirect("http:backuperr.asp?err="&err.number)

set dmobak=server.CreateObject("SQLDMO.Backup")
dmobak.database=mdb
dmobak.devices=mdevname
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<body background="../../Images/dot.gif">

<p><strong>Backuping, wait please...</strong></p>
<%
dmobak.sqlbackup dmosvr
if err.number>0 then Response.Redirect("http:backuperr.asp?err="&err.number)

dmosvr.backupdevices(mdevname).remove
set dmobak=nothing
set dmodev=nothing
dmosvr.disconnect
set dmosvr=nothing
%>
<p><strong>Database '<%=mdb%>' backup successed!</strong></p>
</BODY>
</HTML>


文件3:BackupErr.asp

<%@ Language=VBScript %>
<%
dim errno,errstr
errno=Request.QueryString("err")
errstr=""
select case cstr(errno)
case "18456"
errstr="administrators or password error!"
case "20482"
errstr="server name error or server cannot connect!"
case "911"
errstr="database not found!"
case "15026"
errstr="server path not found!"
case "3201"
errstr="server path not found!"
case "3254"
errstr="restore from file lawlessness!"
case else
errstr="unknown error! retry later please!"
end select
%>
<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=VBScript>
<META NAME="GENERATOR" Content="Microsoft FrontPage 4.0">
<SCRIPT ID=clientEventHandlersVBS LANGUAGE=vbscript>
<!--

Sub btnret_onclick
history.back
End Sub

-->
</SCRIPT>
<title></title>
</HEAD>
<body class="bg_frame_up">
<p align=center><font color=#006666><%=errstr%></font></p>
<p align=center><input id=btnret name=btnret type=button value=Return style="font-family: Arial; font-size: 9pt"></p>
</BODY>
</HTML>
Random 2003-11-17
  • 打赏
  • 举报
回复
只能把备份数据库的那部分做成DLL组件,然后在asp程序中调用该组件实现!
Jaron 2003-11-17
  • 打赏
  • 举报
回复
sql="BACKUP DATABASE ["&strDatabase&"] TO DISK='"& strBackupPath &"' WITH Format, Name='All_Data'" '完全备份

sql="BACKUP DATABASE ["&strDatabase&"] TO DISK='"& strBackupPath &"' WITH DIFFERENTIAL, Name='DIF_Data'" '差异备份

28,407

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧