数据库的备份的问题,我这怎么不行呀。

国手 2004-01-16 04:32:39
conn.asp

<%
set conn=server.CreateObject("ADODB.Connection")
connstr="driver={SQL Server};server=jia;database=huangyan;uid=sa;pwd=huangyan;"
conn.open connstr
%>

default.asp

<!--#include file="conn.asp"-->
<html>
<head>
<link href="long-css.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>数据备份</title>
<script language="JavaScript">
function checkdata(){
dataaddr=document.form.dataaddr.value;
testfitem=/^[C-Z]{1}$/;
fitem=dataaddr.charAt(0)
if (!testfitem.test(fitem)){
alert("非法的备份地址");
document.form.dataaddr.focus();
return false;
}
if(dataaddr.charAt(1)!=":"){
alert("非法的备份地址");
document.form.dataaddr.focus();
return false;
}
if(dataaddr.charAt(2)!="\\"){
alert("非法的备份地址");
document.form.dataaddr.focus();
return false;
}
var tstr="0123456789ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\\"
for (var s=0;s<dataaddr.length-3;s++)
{
teststr=dataaddr.charAt(s)
if (tstr.indexOf(teststr)==-1){
alert("非法的备份地址");
document.form.dataaddr.focus();
return false;
}
}
namestr=/^[a-zA-Z0-9\-]*$/;
dataname=document.form.dataname.value;
if (document.form.dataname.value.length==0){
alert("备份文件名不能为空!");
document.form.dataname.focus();
return false;
}
if (!namestr.test(dataname)){
alert("备份文件名输入中含有非法字符");
document.form.dataname.focus();
return false;
}
return true
}
</script>
</head>
<%
'*****************************************************************
Function CheckDir(FolderPath)
Set fso1 = CreateObject("Scripting.FileSystemObject")
If fso1.FolderExists(FolderPath) then
'存在
CheckDir = True
Else
'不存在
CheckDir = False
End if
Set fso1 = nothing
End Function

Function MakeNewsDir(foldername)
dim f
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.CreateFolder(foldername)
MakeNewsDir = True
Set fs = nothing
End Function

'*****************************************************************
'创建文件夹.
if request("action")="backup" then
dataaddr=trim(request("dataaddr"))
set createfso=createobject("Scripting.FileSystemObject")
if CheckDir(dataaddr)=false then '不存在该文件夹.
if instr(3,dataaddr,"\")>0 then '存在二级目录以上
dataaddr=split(dataaddr,"\",-1)
for t=0 to ubound(dataaddr)
if t=0 then
backupaddr=backupaddr+dataaddr(t)
else
backupaddr=backupaddr&"\"+dataaddr(t)
if CheckDir(backupaddr)=false then '在已存在的文件夹里建立新文件夹.
createfso.createfolder(backupaddr)
end if
end if
next
dataaddr=backupaddr '得到新建的文件夹.
else '只有一级目录
createfso.createobject(dataaddr)
dataaddr=dataaddr '得到新建的文件夹.
end if
else '存在该文件夹.
dataaddr=dataaddr
end if
set createfso=nothing
'****************************************************************
'备份数据库到站内临时目录.
dataname=trim(request("dataname"))&".dat" '取得备份后的数据名称.
tempaddr=Server.MapPath("backup") '取得站内临时备份文件夹
if CheckDir(tempaddr)=false then '不存在该文件夹,则创建.
MakeNewsDir(tempaddr)
end if
SQL="backup database huangyan to disk='" & tempaddr & "\" & dataname & "'"
'response.Write "dataname:"&dataname&"<br>"
'response.Write "tempaddr:"&tempaddr&"<br>"
'response.Write "SQL:"&SQL&"<br>"
conn.execute(SQL)
on error resume next
if err<>0 then
response.write "错误:"&err.Descripting
'else
' response.write "数据备份成功!"
end if

'****************************************************************
'拷贝备份数据到指定的文件夹中并且删除站点内的临时文件.
realaddr=tempaddr&"\"&dataname
'response.Write "realaddr:"&realaddr&"<br>"
'response.Write "dataaddr:"&dataaddr&"<br>"
set copyfso=createobject("Scripting.FileSystemObject")
copyfso.CopyFile realaddr,dataaddr&"\" '拷贝备份好的数据库文件到指定的文件夹.
copyfso.deleteFile(realaddr) '删除站点内保存的临时文件.
set copyfso=nothing
end if
%>
<%
baktext=request("baktext")
if baktext<>"" then
SQL1="Restore database huangyan from disk='"&baktext1&"'"
conn.execute (SQL1)
end if
%>
<body>
<form name="form" method="post" action="default.asp" >
<table width="500" border="1" align="center" cellpadding="5" cellspacing="0" bordercolor="#000000" bordercolorlight="#000000" bordercolordark="#ffffff" bgcolor="#FFFFFF">
<tr valign="middle">
<td align="center">数据备份</td>
</tr>
<tr valign="middle">
<td height="28">请输入备份数据的地址:
<input type="text" name="dataaddr" class="" style="width:200"> </td>
</tr>
<tr valign="middle">
<td>   备份数据库名称: <input type="text" name="dataname" class="" style="width:200"></td>
</tr>
<tr valign="middle">
<td height="33" align="center"> <input type="submit" name="Submit" value=">>>备 份<<<">
<input type="hidden" name="action" value="backup"> </td>
</tr>
<tr valign="middle">
<td align="left">  * 请输入型如:C:\backup合法的备份地址;<br>
  * 数据库备份名称只能输入"字母或数字"。</td>
</tr>
</table>
</form>
<p>
<p>
<form name="form1" id="form1" action="default.asp">
<table width="500" border="1" align="center" cellpadding="5" cellspacing="0" bordercolor="#000000" bordercolorlight="#000000" bordercolordark="#ffffff" bgcolor="#FFFFFF">
<tr>
<td align="center"><input name="baktext" type="file" id="baktext"></td>
</tr>
<tr>
<td align="center"><input type="submit" name="Submit" value=">>>还 原<<<"></td>
</tr>
</table>
</form>


</body>
</html>

它总是说我还原数据库的时候错误。但是可以备份数据库。
...全文
37 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hongmaohouzi 2004-01-16
  • 打赏
  • 举报
回复
你可以在数据库设置定时备份,在控制面板/任务计划,按步骤操作,就可以了,将备份的文件备份到指定的路径,就可以了。
xieyj 2004-01-16
  • 打赏
  • 举报
回复
参考一下SQL语法:

A. 还原完整数据库
说明 MyNwind 数据库仅供举例说明。
下例显示还原完整数据库备份。

RESTORE DATABASE MyNwind
FROM MyNwind_1

B. 还原完整数据库备份和差异备份
下例还原完整数据库备份后还原差异备份。另外,下例还说明如何还原媒体上的另一个备份集。差异备份追加到包含完整数据库备份的备份设备上。

RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH NORECOVERY
RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH FILE = 2

C. 使用 RESTART 语法还原数据库
下例使用 RESTART 选项重新启动因服务器电源故障而中断的 RESTORE 操作。

-- This database RESTORE halted prematurely due to power failure.
RESTORE DATABASE MyNwind
FROM MyNwind_1
-- Here is the RESTORE RESTART operation.
RESTORE DATABASE MyNwind
FROM MyNwind_1 WITH RESTART

D. 还原数据库并移动文件
下例还原完整数据库和事务日志,并将已还原的数据库移动到 C:\Program Files\Microsoft SQL Server\MSSQL\Data 目录下。

RESTORE DATABASE MyNwind
FROM MyNwind_1
WITH NORECOVERY,
MOVE 'MyNwind' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.mdf',
MOVE 'MyNwindLog1' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.ldf'
RESTORE LOG MyNwind
FROM MyNwindLog1
WITH RECOVERY

E. 使用 BACKUP 和 RESTORE 创建数据库的复本
下例显示使用 BACKUP 和 RESTORE 语句创建 Northwind 数据库的复本。MOVE 语句使数据和日志文件还原到指定的位置。RESTORE FILELISTONLY 语句用于确定待还原数据库内的文件数及名称。该数据库的新复本称为 TestDB。有关更多信息,请参见 RESTORE FILELISTONLY。

BACKUP DATABASE Northwind
TO DISK = 'c:\Northwind.bak'
RESTORE FILELISTONLY
FROM DISK = 'c:\Northwind.bak'
RESTORE DATABASE TestDB
FROM DISK = 'c:\Northwind.bak'
WITH MOVE 'Northwind' TO 'c:\test\testdb.mdf',
MOVE 'Northwind_log' TO 'c:\test\testdb.ldf'
GO

28,407

社区成员

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

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