⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 admin_database.asp

📁 依蓝旅游网站管理系统Elan2008.SP2
💻 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) &")占用 &nbsp;"& 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 &" 占用 &nbsp;"& 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 &" 占用 &nbsp;"& 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">&nbsp;</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 + -