<!--#include file="tgzcm_Conn.asp"-->
<!--#include file="tgzcm_Check.asp"-->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<TITLE>数据备份页面</TITLE>
<link href="skins/css/tgzcm_main.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
input{ border:none}
-->
</style>
</head>
<body> 
<%If Lcase(tgzcm(4))="access" Then%>
<table width="100%" height="130" border="0" align="center" cellpadding="0" cellspacing="0" style="text-align:center;">
  <tr>
    <th colspan=6 style="text-align:center;">数据库备份与还原(只支持Acc数据库备份与还原)</th>
  </tr>
  <tr><form  action="?action=backup" method="post"><td style="text-align:left; padding-left:50px; background:#FFFFFF">数据备份：<input name="databasename" type="text" value="<%=Format_Time(Now,8)%>" style=" border:1px solid #0066FF; width:200px; margin:0px 10px;"><input type="submit" value="备 份 数 据 库" style="font-weight:bold"> </td></form></tr>
 <tr><form  action="?action=restore" method="post"><td style="text-align:left; padding-left:50px; background:#FFFFFF">数据恢复：<input name="databasename" type="text" onFocus="this.value=''" value="请填写已备份的数据库文件名称" style=" border:1px solid #0066FF; width:200px; margin:0px 10px;"><input type="submit" value="恢 复 数 据 库" style="font-weight:bold"> (后缀不用输入，默认为.Asa)如有同名文件，将覆盖</td></form></tr>
  <tr><td style="text-align:left; padding-left:50px; background:#FFFFFF"><font color="#FF0000">
<%
Dim databasename,action
databasename=tgzcm_replace(Request.Form("databasename"))
action=Request.QueryString("action")

If databasename="" and action<>"" Then Call tgzcm_err_a("错误操作!"):Response.End

If IsFolder("DataBackup")=False Then'检测文件夹是否存在
	CreateFolder "DataBackup"
End if

If action="backup" then
	Call CopyTo(tgzcm(5),"DataBackup/"&databasename&".Asa",databasename)
	Response.Write "备份文件名称为"&databasename&".Asa"
ElseIf action="restore" then
	Call CopyTo("DataBackup/"&databasename&".Asa",".."&tgzcm(5),databasename)
	Response.Write "恢复数据库路径"&tgzcm(5)&""
End if

'access数据库备份恢复
Function CopyTo(ByVal cFile,ByVal toFile,databasename)
	 cFile=Server.MapPath(cFile)   '所要备份的文件
	 toFile=Server.MapPath(toFile) '备份文件
	 Dim cFso,cf
	 set cFso=Server.CreateObject("Scripting.FileSystemObject")
	 If cFso.fileexists(cFile) then
		  cFso.Copyfile cFile,toFile
		  response.write   "Access数据库操作成功！"
	 Else
	  	response.write cFile&"文件不存在!"
	 End if
End Function
%>  
  </font></td></tr>
</table>
<%Else%>
<table border="0"  cellspacing="1" cellpadding="5" height="1" align=center width="95%" class="Border">			<tr>
  					<td height=25 class="title">
  					&nbsp;&nbsp;SQL数据库数据处理说明
  					</td>
  				</tr> 	
 				<tr>
 					<td class="tdbg"> 			
 			<blockquote>
<B>一、备份数据库</B>
<BR><BR>
1、打开SQL企业管理器，在控制台根目录中依次点开Microsoft SQL Server<BR>
2、SQL Server组-->双击打开你的服务器-->双击打开数据库目录<BR>
3、选择你的数据库名称（如网站数据库Cl_Web）-->然后点上面菜单中的工具-->选择备份数据库<BR>
4、备份选项选择完全备份，目的中的备份到如果原来有路径和名称则选中名称点删除，然后点添加，如果原来没有路径和名称则直接选择添加，接着指定路径和文件名，指定后点确定返回备份窗口，接着点确定进行备份
<BR><BR>
<B>二、还原数据库</B><BR><BR>
1、打开SQL企业管理器，在控制台根目录中依次点开Microsoft SQL Server<BR>
2、SQL Server组-->双击打开你的服务器-->点图标栏的新建数据库图标，新建数据库的名字自行取<BR>
3、点击新建好的数据库名称（如网站数据库Cl_Web）-->然后点上面菜单中的工具-->选择恢复数据库<BR>
4、在弹出来的窗口中的还原选项中选择从设备-->点选择设备-->点添加-->然后选择你的备份文件名-->添加后点确定返回，这时候设备栏应该出现您刚才选择的数据库备份文件名，备份号默认为1（如果您对同一个文件做过多次备份，可以点击备份号旁边的查看内容，在复选框中选择最新的一次备份后点确定）-->然后点击上方常规旁边的选项按钮<BR>
5、在出现的窗口中选择在现有数据库上强制还原，以及在恢复完成状态中选择使数据库可以继续运行但无法还原其它事务日志的选项。在窗口的中间部位的将数据库文件还原为这里要按照你SQL的安装进行设置（也可以指定自己的目录），逻辑文件名不需要改动，移至物理文件名要根据你所恢复的机器情况做改动，如您的SQL数据库装在D:\Program Files\Microsoft SQL Server\MSSQL\Data，那么就按照您恢复机器的目录进行相关改动改动，并且最后的文件名最好改成您当前的数据库名（如原来是Cl_Web_data.mdf，现在的数据库是Cl_Web，就改成Cl_Web_data.mdf），日志和数据文件都要按照这样的方式做相关的改动（日志的文件名是*_log.ldf结尾的），这里的恢复目录您可以自由设置，前提是该目录必须存在（如您可以指定d:\sqldata\Cl_Web_data.mdf或者d:\sqldata\Cl_Web_log.ldf），否则恢复将报错<BR>
6、修改完成后，点击下面的确定进行恢复，这时会出现一个进度条，提示恢复的进度，恢复完成后系统会自动提示成功，如中间提示报错，请记录下相关的错误内容并询问对SQL操作比较熟悉的人员，一般的错误无非是目录错误或者文件名重复或者文件名错误或者空间不够或者数据库正在使用中的错误，数据库正在使用的错误您可以尝试关闭所有关于SQL窗口然后重新打开进行恢复操作，如果还提示正在使用的错误可以将SQL服务停止然后重起看看，至于上述其它的错误一般都能按照错误内容做相应改动后即可恢复<BR><BR>


<B>三、收缩数据库</B><BR><BR>
一般情况下，SQL数据库的收缩并不能很大程度上减小数据库大小，其主要作用是收缩日志大小，应当定期进行此操作以免数据库日志过大<BR>
1、设置数据库模式为简单模式：打开SQL企业管理器，在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称（如网站数据库Cl_Web）-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”，然后按确定保存<BR>
2、在当前数据库上点右键，看所有任务中的收缩数据库，一般里面的默认设置不用调整，直接点确定<BR>
3、<font color=blue>收缩数据库完成后，建议将您的数据库属性重新设置为标准模式，操作方法同第一点，因为日志在一些异常情况下往往是恢复数据库的重要依据</font>
<BR><BR>

<B>四、设定每日自动备份数据库</B><BR><BR>
<font color=red>强烈建议有条件的用户进行此操作！</font><BR>
1、打开企业管理器，在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器<BR>
2、然后点上面菜单中的工具-->选择数据库维护计划器<BR>
3、下一步选择要进行自动备份的数据-->下一步更新数据优化信息，这里一般不用做选择-->下一步检查数据完整性，也一般不选择<BR>
4、下一步指定数据库维护计划，默认的是1周备份一次，点击更改选择每天备份后点确定<BR>
5、下一步指定备份的磁盘目录，选择指定目录，如您可以在D盘新建一个目录如：d:\databak，然后在这里选择使用此目录，如果您的数据库比较多最好选择为每个数据库建立子目录，然后选择删除早于多少天前的备份，一般设定4－7天，这看您的具体备份要求，备份文件扩展名一般都是bak就用默认的<BR>
6、下一步指定事务日志备份计划，看您的需要做选择-->下一步要生成的报表，一般不做选择-->下一步维护计划历史记录，最好用默认的选项-->下一步完成<BR>
7、完成后系统很可能会提示Sql Server Agent服务未启动，先点确定完成计划设定，然后找到桌面最右边状态栏中的SQL绿色图标，双击点开，在服务中选择Sql Server Agent，然后点击运行箭头，选上下方的当启动OS时自动启动服务<BR>
8、这个时候数据库计划已经成功的运行了，他将按照您上面的设置进行自动备份
<BR><BR>
修改计划：<BR>
1、打开企业管理器，在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->管理-->数据库维护计划-->打开后可看到你设定的计划，可以进行修改或者删除操作
<BR><BR>
<B>五、数据的转移（新建数据库或转移服务器）</B><BR><BR>
一般情况下，最好使用备份和还原操作来进行转移数据，在特殊情况下，可以用导入导出的方式进行转移，这里介绍的就是导入导出方式，导入导出方式转移数据一个作用就是可以在收缩数据库无效的情况下用来减小（收缩）数据库的大小，本操作默认为您对SQL的操作有一定的了解，如果对其中的部分操作不理解，可以咨询动网相关人员或者查询网上资料<BR>
1、将原数据库的所有表、存储过程导出成一个SQL文件，导出的时候注意在选项中选择编写索引脚本和编写主键、外键、默认值和检查约束脚本选项<BR>
2、新建数据库，对新建数据库执行第一步中所建立的SQL文件<BR>
3、用SQL的导入导出方式，对新数据库导入原数据库中的所有表内容<BR>
 			</blockquote> 	
 					</td>
 				</tr>
 			</table>
<%End If
'时间格式处理
Function Format_Time(Byval Tvar,Byval sType)
        dim Tt,sYear,sMonth,sDay,sHour,sMinute,sSecond
        If Not IsDate(Tvar) or sType=0 Then Format_Time = "" : Exit Function
        Tt			= Tvar
        sYear		= Year(Tt)
        sMonth		= Right("0" & Month(Tt),2)
		sDay		= Right("0" & Day(Tt),2)
		sHour		= Right("0" & Hour(Tt),2)
		sMinute		= Right("0" & Minute(Tt),2)
		sSecond		= Right("0" & Second(Tt),2)
        Select Case sType
        Case 1	'2005-10-01 23:45:45
			Format_Time = sYear & "-" & sMonth & "-" & sDay & " " & sHour & ":" & sMinute & ":" & sSecond
        Case 2	'年-月-日 时:分:秒
			Format_Time = sYear & "年" & sMonth & "月" & sDay & "日 " & sHour & "时" & sMinute & "分" & sSecond & "秒"
        Case 3	'2005-10-01
			Format_Time = sYear & "-" & sMonth & "-" & sDay
        Case 4	'2005\10\01
			Format_Time = sYear & "\" & sMonth & "\" & sDay
        Case 5	'10-01 23:45
			Format_Time = sMonth & "-" & sDay & " " & sHour & ":" & sMinute
        Case 6	'2005年10月01日
			Format_Time = sYear & "年" & sMonth & "月" & sDay & "日"
        Case 7	'10-01
			Format_Time = sMonth & "-" & sDay
        Case 8	'20051001234545
			Format_Time = sYear & sMonth & sDay &"_"&sHour & sMinute & sSecond
        Case Else
			Format_Time = Tt
        End Select
    End Function
%>
</body>
</html>