📄 admin_database.asp
字号:
<%
Option Explicit
Response.Buffer = True
Response.Expires = -1
Response.ExpiresAbsolute = Now() - 1
%>
<!--#Include File="../Conn.asp"-->
<!--#Include File="Admin_CheckPurview.asp"-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<link href='Admin_Style.css' type='text/css' rel='stylesheet'>
<title><%=EL_Channel.ChannelName%></title>
<script language="javascript" src="../js/Common.js"></script>
<script language="javascript" src="../js/InstallDir.js"></script>
</head>
<body>
<table width="100%" border="0" cellpadding="0" cellspacing="1" class="Border">
<tr>
<td align="center" class="top_25"><strong>数据库管理</strong></td>
</tr>
<tr>
<td class="td_50">管理导航:<a href="<%=EL_CurrentScriptName%>?Action=Backup">备份数据库</a> | <a href="<%=EL_CurrentScriptName%>?Action=Restore">恢复数据库</a> | <a href="<%=EL_CurrentScriptName%>?Action=Compact">清理数据库日志</a> | <a href="<%=EL_CurrentScriptName%>?Action=Space">系统空间占用</a></td>
</tr>
</table>
<br>
<%
Select Case Action
Case "Backup": Call BackupDatabase()
Case "doBackup": Call DatabaseOpt(0)
Case "Restore": Call RestoreDatabase()
Case "Compact": Call ClearDatabaseLog()
Case "doCompact": Call DatabaseOpt(2)
Case "Space": Call SystemSpace()
End Select
Call EL_Common.Bottom()
Call ApplicationTerminate()
Sub DatabaseOpt(UpdateType)
On Error Resume Next
Dim BackupDir, BackupFileName, BackupFullDir
Dim FSO, BatabaseCmd
BackupDir = EL_Common.ELRequest("BackupDir", 1)
BackupFileName = EL_Common.ELRequest("BackupFileName", 1)
BackupFullDir = EL_Common.ELRequest("BackupFullDir", 1)
Set FSO = Server.CreateObject(Object_FSO)
Select Case UpdateType
Case 0:
BackupFullDir = BackupDir &"\"& BackupFileName
BackupFullDir = Replace(BackupFullDir, "\\", "\")
Call EL_Common.InitCommand(BatabaseCmd, "EL_SP_Database")
With BatabaseCmd
.Parameters.Append .CreateParameter("@UpdateType", 3, 1, 4, UpdateType)
.Parameters.Append .CreateParameter("@BackupFullDir", 200, 1, 500, BackupFullDir)
.Execute()
End With
Set BatabaseCmd = Nothing
Call EL_Common.InsertLog(1, ComeURL, "备份数据库", EL_Admin.AdminName)
Case 1:
'Dim SQLServer, Restore
'Set SQLServer = Server.CreateObject("SQLDMO.SQLServer")
'SQLServer.LoginTimeout = 15
'SQLServer.Connect SqlLocalName, SqlUsername, SqlPassword
'Set Restore = Server.CreateObject("SQLDMO.Restore")
'Restore.Action = 0
'Restore.Database = SqlDatabaseName
'Restore.Files = BackupFullDir
'Restore.ReplaceDatabase = True
'Restore.SQLRestore SQLServer
'Set Restore = Nothing
'Set SQLServer = Nothing
'Call EL_Common.InsertLog(1, ComeURL, "恢复数据库", EL_Admin.AdminName)
Case 2:
Call EL_Common.InitCommand(BatabaseCmd, "EL_SP_Database")
With BatabaseCmd
.Parameters.Append .CreateParameter("@UpdateType", 3, 1, 4, UpdateType)
.Parameters.Append .CreateParameter("@BackupFullDir", 200, 1, 500, "")
.Execute()
End With
Set BatabaseCmd = Nothing
Call EL_Common.InsertLog(1, ComeURL, "清理数据库日志", EL_Admin.AdminName)
End Select
Set FSO = Nothing
If UpdateType=0 Then
EL_Common.ShowSuccessMsg("数据库备份成功!<br><p class=bluetext>备份文件路径:"& BackupDir &"\"& BackupFileName &"</p>")
ElseIf UpdateType=1 Then
EL_Common.ShowSuccessMsg("数据库恢复成功!")
Else
EL_Common.ShowSuccessMsg("数据库日志清除成功!")
End If
EL_Common.ShowScriptError()
End Sub
Function GetDatabaseSize()
Dim DatabaseCmd, rsDatabase
Call EL_Common.InitCommand(DatabaseCmd, "sp_spaceused")
Set rsDatabase = DatabaseCmd.Execute()
GetDatabaseSize = rsDatabase(1)
rsDatabase.Close()
Set rsDatabase = Nothing
Set DatabaseCmd = Nothing
End Function
Sub SystemSpace()
On Error Resume Next
Dim FSO, Folder, SystemTruePath
Dim SytemTotalSize, Sizes
Sizes = 0
SystemTruePath = Server.MapPath(InstallDir)
Set FSO = Server.CreateObject(Object_FSO)
Set Folder = FSO.GetFolder(SystemTruePath)
SytemTotalSize = Folder.Size
Set Folder = Nothing
%>
<style>
div{ height:22px;}
</style>
<table width="100%" border="0" cellpadding="0" cellspacing="1" class="Border">
<tr>
<td class="top_25"><strong>系统空间占用统计</strong></td>
</tr>
<tr>
<td class="td_25" style="padding:10px;">
<div><strong>系统物理路径:</strong> <%=SystemTruePath%></div>
<div><strong>总占用空间:</strong> <%=FormatNumber(SytemTotalSize / (1024*1024), 2)%> M</div>
<div><strong>数据库占用:</strong> <%=GetDatabaseSize()%></div>
<p></p>
<div class="td_ItemName"><strong class="BlueText">频道占用统计:</strong></div><br>
<%
Dim ChannelCmd, rsChannel, arrChannelFolders, RowCount, i
Dim StrFields, StrCondition, Temp
Call EL_Common.InitCommand(ChannelCmd, "EL_SP_ChannelList")
StrFields = "ChannelName,ChannelDir"
StrCondition = "ChannelType=0 And Disabled='0'"
arrChannelFolders = ""
With ChannelCmd
.Parameters.Append .CreateParameter("RETURN", 3, 4, 4)
.Parameters.Append .CreateParameter("@ArrFields",200, 1, Len(StrFields), StrFields)
.Parameters.Append .CreateParameter("@StrCondition",200, 1, Len(StrCondition), StrCondition)
.Parameters.Append .CreateParameter("@MaxOrderID",3, 2, 4)
Set rsChannel = .Execute()
End With
rsChannel.Close()
RowCount = ChannelCmd(0)
If RowCount > 0 Then
rsChannel.Open()
For i = 1 To RowCount
arrChannelFolders = EL_Common.Join2String(arrChannelFolders, Trim(rsChannel(1)), "|")
Set Folder = FSO.GetFolder(SystemTruePath &"\"& rsChannel(1))
Temp = FormatNumber(Folder.Size / 1024, 2)
Sizes = Sizes + Temp
If Temp < 1 Then Temp = "0"& Temp
Response.Write "<div><div style='float:left'><img src='Images/folder.gif' border=0 width=16 height=14></div>"& rsChannel(0) &"("& rsChannel(1) &")占用 "& Temp &" K</div>"
Set Folder = Nothing
rsChannel.MoveNext
Next
rsChannel.Close()
End If
Set rsChannel = Nothing
Set ChannelCmd = Nothing
%>
<p></p>
<div class="td_ItemName"><strong class="BlueText">其他目录及文件占用统计:</strong></div><br>
<div style="float:left; width:50%;">
<%
Dim SubFolder, TempObject
Set Folder = FSO.GetFolder(SystemTruePath)
Set SubFolder = Folder.SubFolders
arrChannelFolders = Split(arrChannelFolders, "|")
For Each TempObject In SubFolder
If Not EL_Common.FoundInArray(arrChannelFolders, Trim(TempObject.Name)) Then
Temp = FormatNumber(TempObject.Size / 1024, 2)
Sizes = Sizes + Temp
If Temp < 1 Then Temp = "0"& Temp
Response.Write "<div><div style='float:left; width:25px;'><img src='Images/folder.gif' border=0 width=16 height=14></div><div style='float:left;padding-top:0px;'>"& TempObject.Name &" 占用 "& Temp &" K</div></div>"
End If
Next
Set SubFolder = Nothing
%>
</div>
<div style="float:left;">
<%
For Each TempObject In Folder.Files
Temp = FormatNumber(TempObject.Size / 1024, 2)
Sizes = Sizes + Temp
If Temp < 1 Then Temp = "0"& Temp
Response.Write "<div><div style='float:left; width:25px;'><img src='Images/file.gif' border=0 width=16 height=17></div><div style='float:left;padding-top:3px;'>"& TempObject.Name &" 占用 "& Temp &" K</div></div>"
Next
%>
</div>
</td>
</tr>
</table>
<%
Set FSO = Nothing
EL_Common.ShowScriptError()
End Sub
Sub ClearDatabaseLog()
On Error Resume Next
%>
<form name="myform" action="Admin_Database.asp" method="post">
<table width="100%" border="0" cellpadding="0" cellspacing="1" class="Border">
<tr>
<td class="top_25"><strong>清除数据库日志</strong></td>
</tr>
<tr>
<td align="center" class="td_ItemName" style="height:40px;"><span class="redText">* 在清除数据库日志前,请先做好数据库备份,本操作不可逆! *</span></td>
</tr>
<tr>
<td align="center" class="td_25" style="height:50px;"><input type="submit" name="Submit2" value=" 清除日志 ">
<input name="Action" type="hidden" id="Action" value="doCompact"></td>
</tr>
</table>
</form>
<%
EL_Common.ShowScriptError()
End Sub
Sub RestoreDatabase()
On Error Resume Next
%>
<table width="100%" border="0" cellpadding="0" cellspacing="1" class="Border">
<tr>
<td class="top_25"><strong>恢复数据库</strong></td>
</tr>
<tr>
<td align="center" class="td_ItemName" style="height:100px;"><span class="redText">* 目前未提供在线恢复SQL数据库,请您直接使用MSSQL提供的数据库恢复功能进行恢复!*</span></td>
</tr>
</table>
<%
EL_Common.ShowScriptError()
End Sub
Sub BackupDatabase()
On Error Resume Next
%>
<script language="javascript">
function Check(frm){
if(frm.BackupDir.value.trim()==""){
alert("请输入备份目录");
frm.BackupDir.focus();
return false;
}
if(frm.BackupFileName.value.trim()==""){
alert("请输入备份文件名称");
frm.BackupFileName.focus();
return false;
}else if(frm.BackupFileName.value.length>50){
alert("备份文件名称太长,请在50个字符以内");
frm.BackupFileName.focus();
return false;
}else if(!CheckWord(frm.BackupFileName.value.split(".")[0])){
alert("文件名称必须由英文字母、数字或下划线组成"+frm.BackupFileName.value.split(".")[0]);
frm.BackupFileName.focus();
return false;
}
SubmitOnce(frm);
return;
}
</script>
<form name="myform" action="Admin_Database.asp" method="post" onSubmit="return Check(this)">
<table width="100%" border="0" cellpadding="0" cellspacing="1" class="Border">
<tr>
<td colspan="2" class="top_25"><strong>备份数据库</strong></td>
</tr>
<tr>
<td colspan="2" align="center" class="td_ItemName" style="height:40px;"><span class="redText">* 我们强烈建议您直接使用MSSQL提供的数据库备份功能进行备份!*</span></td>
</tr>
<tr>
<td width="19%" class="td_ItemName"><strong>备份目录</strong><br>
<span class="redText">请输入完整路径</span><br></td>
<td width="81%" class="td_25"><input name="BackupDir" type="text" id="BackupDir" size="40">
<span class="BlueText">注意:此路径是指数据库服务器上的路径,并非IIS服务器</span></td>
</tr>
<tr>
<td class="td_ItemName"><strong>备份文件名称</strong><br>可自行修改文件后缀,如有同名文件,将覆盖<br></td>
<td class="td_25"><input name="BackupFileName" type="text" id="BackupFileName" value="SQL_<%=Replace(EL_Common.FormatDate(Date()), "-", "")%>.asa" size="40">
<span class="BlueText">文件名称只能由英文字母、数字或下划线组成</span></td>
</tr>
<tr>
<td class="td_ItemName"> </td>
<td class="td_50"><input type="submit" name="Submit" value="开始备份">
<input name="Action" type="hidden" id="Action" value="doBackup"></td>
</tr>
</table>
</form>
<p class="redText"> *** 以上操作不可逆 ***</p>
<%
EL_Common.ShowScriptErrorMsg()
End Sub
%>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -