用ASP备份SQL Server数据库的问题

ghlfllz 2004-06-17 04:04:46
我需要做一个MIS,需要有一个直接使用ASP备份和还原SQL Server数据库的功能
最好是可以达到如下要求
SQL Server与IIS可以是在不同的服务器上;
还原数据库时可以进行强制还原;

请各位不吝赐教,方法越多越好

谢谢
...全文
348 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghlfllz 2004-07-06
  • 打赏
  • 举报
回复
感谢各位的讨论,现在结帖

虽然问题并没有最终解决
alcoholwang 2004-07-02
  • 打赏
  • 举报
回复
SQL用ASP备份的方法就不说了,上面都帖出来了。。。。

备份到异地WWW上,好像不太可能吧????

A服务器是SQL服务器,B是WWW。

自己做个VB程序,然后定时从A上获取备份????
robinsonyjf 2004-07-02
  • 打赏
  • 举报
回复
学习中,有点复杂。
aoeiuvcom 2004-07-02
  • 打赏
  • 举报
回复
gz一下
ghlfllz 2004-07-02
  • 打赏
  • 举报
回复
dragonlyf(Convert 2 .net ……) 的方法倒是可以值得参考
但是如果SQL Server与IIS在异地的话,FSO就不能使用了,除非是SQL Server和IIS在同一服务器上

各位还有什么别的方法呢
ghlfllz 2004-07-02
  • 打赏
  • 举报
回复
如果只是备份到本地的话,就有比较多的方法
如果程序是分布式结构的话,就会要求备份到异地的WWW上
方便于将备份下载到本地进行备份

大家再讨论看有没有可行的方法
king2003 2004-07-01
  • 打赏
  • 举报
回复
不错,帮你顶一顶
孟子E章 2004-07-01
  • 打赏
  • 举报
回复
就是SQL Server的备份文件怎么样存到异地的WWW服务器上?
上载,下载
ghlfllz 2004-07-01
  • 打赏
  • 举报
回复
aspczlover(执子之手...) 的这种方法我已经实现了
但和你一样我存在这样的疑问

就是SQL Server的备份文件怎么样存到异地的WWW服务器上
还原时怎么样从异地的WWW服务器上还原
各位有什么建议啊
aspczlover 2004-07-01
  • 打赏
  • 举报
回复
asp操作数据服务器上的东东好像也不太容易...
aspczlover 2004-07-01
  • 打赏
  • 举报
回复
但这样的备份和还原只能是将备份文件放在SQL Server所在的机器上,不能放在异地的WWW服务器所在的文件目录下
各位有没有什么好的建议啊---》

SQL Server的备份还原操作只能在本机进行吧,
要想把SQL Server所在的机器上的数据备份到异地的www服务器,好像很难哦!
关注......
aspczlover 2004-07-01
  • 打赏
  • 举报
回复
能备份,不过需要服务器和数据服务器在同一机器
至于还原 用Restore Database 修改一下语句
restore database 自定义的数据库名 from disk='数据文件路径'
再做相应的修改就行
<!--#include file="../conn.INC"-->
<html>
<head>

<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
'****************************************************************
'取得数据库名
Set rs=Conn.OpenSchema(20)
While not rs.EOF
databasename=rs(0)
rs.MoveNext
Wend
'备份数据库到站内临时目录.
dataname=trim(request("dataname"))&".dat" '取得备份后的数据名称.
tempaddr=Server.MapPath("backup") '取得站内临时备份文件夹
if CheckDir(tempaddr)=false then '不存在该文件夹,则创建.
MakeNewsDir(tempaddr)
end if
SQL="backup database " &databasename& " to disk='" & tempaddr & "\" & dataname & "'"
response.write sql
'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
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
%>
<body>
<form name="form" method="post" action="indexdata.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" size="20"> </td>
</tr>
<tr valign="middle">
<td>   备份数据库名称:
<input type="text" name="dataname" class="" style="width:200" size="20"></td>
</tr>
<tr valign="middle">
<td 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>
</body>
</html>
ghlfllz 2004-07-01
  • 打赏
  • 举报
回复
Jaron(唐伯虎点蚊香也要烧香) 给的程序太过于庞大了,不过还是谢谢你

后来看了看SQL Server的文档,直接使用了SQL Server的功能完成了备份与还原操作

但这样的备份和还原只能是将备份文件放在SQL Server所在的机器上,不能放在异地的WWW服务器所在的文件目录下
各位有没有什么好的建议啊
潜水的鱼 2004-07-01
  • 打赏
  • 举报
回复
问世界上最有钱的人吧,他好像刚到中国

用来用去,都是他的东东,他肯定可以解决,

^_^

如果是整个数据库备份,如果权限够的话,能不能把它相对应的那两个数据库文件D下来,但不懂能不能操作附加数据库功能??
dragonlyf 2004-07-01
  • 打赏
  • 举报
回复
这样备份
用FSO直接把sqlserver data下的"**_data.mdf"和相应的"**_Log.LDF"拷贝下来。
littlepotato78 2004-07-01
  • 打赏
  • 举报
回复
关注中……
ghlfllz 2004-07-01
  • 打赏
  • 举报
回复
上面的各位所说的备份的方法,都是使用的SQL Server自带的功能
我知道这样可以进行数据库的备份和还原
而且我现在也是使用的这个方法进行备份和还原的

但我们现在需要解决的问题是怎么样把SQL Server的备份和还原操作在两个异地的SQL Server与WWW服务器之间完成,而不是如何备份和还原数据库
各位能不能在这个方面提供一点意见或者建议
谢谢
blues-star 2004-07-01
  • 打赏
  • 举报
回复
mzcih(小马过河) :

本身有没有错,但是这个是通过程序执行的,往往我们要对工具(本身)进行扩展、编程,是完全需要这些操作的。
blues-star 2004-07-01
  • 打赏
  • 举报
回复
set Connection = Server.CreateObject("ADODB.Connection")

Connection.Open ConnectionString

Connection.Execute "BACKUP *******"

我上面所写的Connection.Execute是javascript语法。
mzcih 2004-07-01
  • 打赏
  • 举报
回复
SQL本身就有这个功能,何必用ASP来完成,让兔去跑步,鸭去游泳吧!
加载更多回复(9)

28,391

社区成员

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

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