ASP.NET网站能够实现数据库自动定时备份吗

ASP.NET网站能够实现数据库自动定时备份吗,第1张

通常,ASP.NET无法实现自动备份,因为,在网站空闲时,web服务器会收回ASP.NET进程,导致定时器失败(也有通过代码,让网站总是繁忙,这样web服务器就不会收回他的)。

但是,基本上推荐还是用windows服务或者exe实现数据库备份。

从技术上而言,本身,使用.NET实现数据库备份非常简单。

    string db="XXX"

    string sql = " use " + db + " backup database " + db + " to disk=@'c:\back\abc.bak'"

只要使用SqlCommand对象执行上面SQL,即可备份数据库。

使用SQLDMO

代码如下:

using System

using System.Collections.Generic

using System.Text

using System.Windows.Forms

using System.IO

namespace LoaMen.Com.Sql

{

/// <summary>

/// create by loamen http://www.loamen.com

/// </summary>

public class SqlServerHelper

{

string connectionString = string.Empty

string dbServer, dbUser, dbPassword, dbName

private string _fileName

/// <summary>

/// 文件全路径

/// </summary>

public string FileName

{

get { return _fileName}

set { _fileName = value}

}

public SqlServerHelper()

{

string[] connectionString = PubConstant.ConnectionString.Split('')

foreach (string str in connectionString)

{

if (str.ToLower().Contains("data source"))

{

dbServer = str.Split('=')[1]

}

else if (str.ToLower().Contains("initial catalog"))

{

dbName = str.Split('=')[1]

}

else if (str.ToLower().Contains("user id"))

{

dbUser = str.Split('=')[1]

}

else if (str.ToLower().Contains("pwd"))

{

dbPassword = str.Split('=')[1]

}

}

}

private bool checkDB()

{

if (!string.IsNullOrEmpty(dbServer) &&

!string.IsNullOrEmpty(dbName) &&

!string.IsNullOrEmpty(dbUser) &&

!string.IsNullOrEmpty(dbPassword))

{

return true

}

else

{

return false

}

}

/// <summary>

/// 数据库备份

/// </summary>

public void DbBackup()

{

if (checkDB())

{

SQLDMO.Backup oBackup = new SQLDMO.BackupClass()

SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass()

try

{

oSQLServer.LoginSecure = false

oSQLServer.Connect(dbServer, dbUser, dbPassword)

oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database

oBackup.Database = dbName

FileInfo fileInfo = new FileInfo(this.FileName)

oBackup.Files = fileInfo.FullName

oBackup.BackupSetName = dbName

oBackup.BackupSetDescription = "数据库备份"

oBackup.Initialize = true

oBackup.SQLBackup(oSQLServer)

}

catch (Exception ex)

{

throw ex

}

finally

{

oSQLServer.DisConnect()

}

}

else

{

MessageBoxEx.ShowInformationMessage("数据库连接有问题,无法备份!")

}

}

/// <summary>

/// 数据库恢复

/// </summary>

public void DbRestore()

{

if (checkDB())

{

SQLDMO.Restore oRestore = new SQLDMO.RestoreClass()

SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass()

try

{

oSQLServer.LoginSecure = false

oSQLServer.Connect(dbServer, dbUser, dbPassword)

SQLDMO.QueryResults qr = oSQLServer.EnumProcesses(-1)

int iColPIDNum = -1

int iColDbName = -1

for (int i = 1i <= qr.Columnsi++)

{

string strName = qr.get_ColumnName(i)

if (strName.ToUpper().Trim() == "SPID")

{

iColPIDNum = i

}

else if (strName.ToUpper().Trim() == "DBNAME")

{

iColDbName = i

}

if (iColPIDNum != -1 &&iColDbName != -1)

break

}

//杀死使用strDbName数据库的进程

for (int i = 1i <= qr.Rowsi++)

{

int lPID = qr.GetColumnLong(i, iColPIDNum)

string strDBName = qr.GetColumnString(i, iColDbName)

if (strDBName.ToUpper() == this.dbName.ToUpper())

{

oSQLServer.KillProcess(lPID)

}

}

oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database

oRestore.Database = dbName

oRestore.Files = this.FileName

oRestore.FileNumber = 1

oRestore.ReplaceDatabase = true

oRestore.SQLRestore(oSQLServer)

}

catch (Exception ex)

{

throw ex

}

finally

{

oSQLServer.DisConnect()

}

}

else

{

MessageBoxEx.ShowInformationMessage("数据库连接有问题,无法还原!")

}

}

}

}

要加分哦

我可是把整个代码都贴出来了

用着可好用 我正用的

有两个

一个简单的下面是代码

<form name="form1" method="post" action="?action=bf">

备份原数据库路径:

<input name="text1" type="text" id="text1">

<p>备份目标数据库路径:

<input name="text2" type="text" id="text2">

</p>

<p>

<label>

<input type="submit" name="Submit" value="备份">

</label>

</p>

</form>

<%

Function CopyFiles(TempSource,TempEnd)

Dim FSO

Set FSO = Server.CreateObject("Scripting.FileSystemObject")

IF FSO.FileExists(TempEnd) then

Response.Write "目标备份文件 <b>" &TempEnd &"</b>已存在,请先删除!"

Set FSO=Nothing

Exit Function

End IF

IF FSO.FileExists(TempSource) Then

Else

Response.Write "要复制的源数据库文件 <b>"&TempSource&"</b>不存在!"

Set FSO=Nothing

Exit Function

End If

FSO.CopyFile TempSource,TempEnd

Response.Write "已经成功复制文件 <b>"&TempSource&"</b>到 <b>"&TempEnd&"</b>"

Set FSO = Nothing

End Function

if request("action")="bf" then

ff=server.MapPath(request("text1"))

aa=server.MapPath(request("text2"))

call CopyFiles(ff,aa)

end if

%>

**************************************我是分割线************************

还有复杂的

<http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312" />

<title>数据库备份系统</title>

<style type="text/css">

<!--

body {

background-color: #F4FFD2

margin-left:5px

margin-top: 15px

margin-right: 5px

margin-bottom: 10px

}

html{

font-size:12px

scrollbar-face-color:#99cc66

scrollbar-arrow-color:#000000

scrollbar-track-color:#F4FFD2

scrollbar-3dlight-color:#FFFFFF

scrollbar-highlight-color:#fcfcfc

scrollbar-shadow-color:#99cc00

scrollbar-darkshadow-color:#99cc66

}

input{background-color:#FFFFFF

border-color:#333333

border:1px

font-style:normal

}

.title {

FONT-SIZE: 18pxCOLOR: #010000FONT-FAMILY: "黑体"

}

A:hover {

COLOR: #f18b01FONT-FAMILY: Verdana, Arial, Helvetica, sans-serifTEXT-DECORATION: none

}

TD {

FONT-SIZE: 9ptCOLOR: #666666WORD-BREAK: break-allLINE-HEIGHT: 170%TEXT-DECORATION: none

}

.白字 {

COLOR: #ffffff

}

.company {

FONT-SIZE: 12pxCOLOR: #2b2b2bLINE-HEIGHT: 22pxFONT-FAMILY: Verdana, Arial, Helvetica, sans-serif

}

.dot {

FONT-SIZE: 12pxCOLOR: #aeaeaeFONT-FAMILY: Verdana, Arial, Helvetica, sans-serif

}

.news {

FONT-SIZE: 12pxCOLOR: #515151FONT-FAMILY: Verdana, Arial, Helvetica, sans-serifTEXT-DECORATION: none

}

.word {

FONT-SIZE: 12pxCOLOR: #6f6f6fLINE-HEIGHT: 18pxFONT-FAMILY: Verdana, Arial, Helvetica, sans-serifTEXT-DECORATION: none

}

.caption_dark {

FONT-WEIGHT: boldFONT-SIZE: 12pxCOLOR: #000000FONT-FAMILY: Verdana, Arial, Helvetica, sans-serifTEXT-DECORATION: none

}

.caption_simple {

FONT-WEIGHT: boldFONT-SIZE: 12pxCOLOR: #ffffffFONT-FAMILY: Verdana, Arial, Helvetica, sans-serifTEXT-DECORATION: none

}

.button {

FONT-SIZE: 12pxCOLOR: #666666TEXT-DECORATION: none

}

.date {

FONT-SIZE: 10pxCOLOR: #acacacFONT-FAMILY: Verdana, Arial, Helvetica, sans-serif

}

.doman {

FONT-WEIGHT: normalFONT-SIZE: 12pxCOLOR: #0a52afFONT-FAMILY: Arial, Helvetica, sans-serifTEXT-DECORATION: none

}

.form {

BORDER-RIGHT: #e0e0e0 1px solidBORDER-TOP: #e0e0e0 1px solidFONT-SIZE: 12pxBORDER-LEFT: #e0e0e0 1px solidCOLOR: #333333BORDER-BOTTOM: #e0e0e0 1px solidFONT-FAMILY: Verdana, Arial, Helvetica, sans-serifBACKGROUND-COLOR: #f7f7f7

}

.web_button {

FONT-WEIGHT: boldFONT-SIZE: 12pxCOLOR: #616e43TEXT-DECORATION: none

}

.bbs_user {

FONT-WEIGHT: boldFONT-SIZE: 12pxCOLOR: #ff6600FONT-FAMILY: Verdana, Arial, Helvetica, sans-serifTEXT-DECORATION: none

}

.bbs_user_simple {

FONT-SIZE: 12pxCOLOR: #575757FONT-FAMILY: Verdana, Arial, Helvetica, sans-serifTEXT-DECORATION: none

}

.menu {

FONT-SIZE: 12pxCOLOR: #e4e4e4TEXT-DECORATION: none

}

.copright {

FONT-SIZE: 12pxCOLOR: #333333FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif

}

.bt_word {

FONT-SIZE: 12pxCOLOR: #333333LINE-HEIGHT: 18pxFONT-FAMILY: Verdana, Arial, Helvetica, sans-serifTEXT-DECORATION: none

}

.list {

FONT-SIZE: 12pxCOLOR: #424242FONT-FAMILY: "??"TEXT-DECORATION: none

}

.list_class {

FONT-SIZE: 12pxCOLOR: #808080FONT-FAMILY: "???"TEXT-DECORATION: none

}

.page {

FONT-SIZE: 12pxCOLOR:#000000TEXT-DECORATION: none

}

.bbs_bt {

FONT-WEIGHT: boldFONT-SIZE: 12pxCOLOR: #000000TEXT-DECORATION: none

}

.bbs_bt_simple {

FONT-WEIGHT: normalFONT-SIZE: 12pxCOLOR: #545454TEXT-DECORATION: none

}

.bbs_list_word {

FONT-SIZE: 12pxCOLOR: #171717FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif

}

.case {

FONT-SIZE: 12pxCOLOR: #5a5e61LINE-HEIGHT: 18pxFONT-FAMILY: Verdana, Arial, Helvetica, sans-serifTEXT-DECORATION: none

}

.date_simple {

FONT-SIZE: 10pxCOLOR: #666666FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif

}

.product_bt {

FONT-WEIGHT: boldFONT-SIZE: 12pxCOLOR: #333333LINE-HEIGHT: 16pxFONT-FAMILY: Verdana, Arial, Helvetica, sans-serifTEXT-DECORATION: none

}

.prodcut {

FONT-SIZE: 12pxCOLOR: #505050LINE-HEIGHT: 16pxFONT-FAMILY: Verdana, Arial, Helvetica, sans-serifTEXT-DECORATION: none

}

.form2 {

BORDER-RIGHT: #989898 1px solidBORDER-TOP: #989898 1px solidFONT-SIZE: 12pxBORDER-LEFT: #989898 1px solidCOLOR: #333333BORDER-BOTTOM: #989898 1px solidFONT-FAMILY: Verdana, Arial, Helvetica, sans-serifBACKGROUND-COLOR: #f6f6f6

}

.button3 {

FONT-SIZE: 12pxCOLOR: #7b7b7bFONT-FAMILY: Verdana, Arial, Helvetica, sans-serifTEXT-DECORATION: none

}

.bt1 {

FONT-WEIGHT: boldFONT-SIZE: 12pxCOLOR: #717171

}

.bt_line {

FONT-SIZE: 14pxCOLOR: #547db2FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif

}

.bt2 {

FONT-WEIGHT: boldFONT-SIZE: 12pxCOLOR: #ff9501FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif

}

A.nav:link {

FONT-SIZE: 12pxCOLOR: #ffffffTEXT-DECORATION: none

}

A.nav:visited {

FONT-SIZE: 12pxCOLOR: #ffffffTEXT-DECORATION: none

}

A.nav:hover {

FONT-SIZE: 12pxCOLOR: #ffff00TEXT-DECORATION: none

}

<font face="Verdana, Arial, Helvetica, sans-serif">

.sb{color:#000000font-size:13pxtext-decoration:none}

a.sb:visited{color:#6699FFfont-size:13}

a.sb:link{color:#3399CCfont-size:13px}

.tomg { color: #666666font-size:12pxtext-decoration:none}

a.tomg:link {color: #666666text-decoration:none}

a.tomg:visited {color: #666666text-decoration:none}

a.tomg:hover { color:#FF3300font-size:14pxtext-decoration:none}

.00 { color:#333333font-size:12pxtext-decoration:none}

a.00:hover { color: #FF6666text-decoration:underline}

a.00:link {color: #666666text-decoration:none}

a.00:visited {color: #000000text-decoration:none}

a.bb:link {color:#666666text-decoration:nonecursor:handfont-weight:bold}

a.bb:visited {color: #666666text-decoration:nonecursor:handfont-weight:bold}

a.bb:hover {color: #CC0000text-decoration:underlinecursor:handfont-weight:bold}

.cc{color:#FFFFFFfont-size:12pxtext-decoration:none}

.tomg1 { color: #000000font-size:12pxletter-spacing:1.5word-spacing:1line-height:2text-decoration:none}

a.tomg1:link {color: #000000text-decoration:none}

a.tomg1:visited {color: #000000text-decoration:none}

a.tomg1:hover { color:#99CC33 text-decoration:none}

.style1 {color: #000000}

.style2 {

color: #FF0000

font-weight: bold

}

-->

</style></head>

<body>

<table width="98%" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#99CC00">

<form name="form1" id="form1" method="post" action="?action=bf">

<tr>

<td height="71" bgcolor="#FFFFFF"><table width="100%" height="100%" border="0" cellpadding="0" cellspacing="1">

<tr>

<td height="29" colspan="2" align="center" background="afterimage/line2.jpg" class="product_bt">::数据库备份::</td>

</tr>

<tr>

<td height="25" colspan="2" background="afterimage/titleline.gif"> </td>

</tr>

<tr>

<td width="18%" height="25" align="center" bgcolor="#F9F9F9"><span class="style1">数据路径:

</span></td>

<td width="82%" bgcolor="#F9F9F9"><input name="text1" type="text" id="text1" size="50" /> </td>

</tr>

<tr>

<td height="25" align="center" bgcolor="#EEEEEE"><span class="style1"> 备份数据库路径:</span></td>

<td height="25" bgcolor="#EEEEEE"><input name="text2" type="text" id="text2" size="50" />

 

<input type="submit" name="Submit" value=" 备份数据库 " /></td>

</tr>

<tr>

<td height="25" colspan="2" align="center" bgcolor="#F3F3F3"><%

Function CopyFiles(TempSource,TempEnd)

Dim FSO

Set FSO = Server.CreateObject("Scripting.FileSystemObject")

IF FSO.FileExists(TempEnd) then

Response.Write "目标备份文件 <b>" &TempEnd &"</b>已存在,请先删除!"

Set FSO=Nothing

Exit Function

End IF

IF FSO.FileExists(TempSource) Then

Else

Response.Write "要复制的源数据库文件 <b>"&TempSource&"</b>不存在!"

Set FSO=Nothing

Exit Function

End If

FSO.CopyFile TempSource,TempEnd

Response.Write "已经成功复制文件 <b>"&TempSource&"</b>到 <b>"&TempEnd&"</b>"

Set FSO = Nothing

End Function

if request("action")="bf" then

ff=server.MapPath(request("text1"))

aa=server.MapPath(request("text2"))

ss=split(request("text2"),"/")

CreateFolder(ss(0))

call CopyFiles(ff,aa)

end if

Sub CreateFolder(strFolder)

'首选判断要建立的文件夹是否已经存在

strTestFolder = Server.Mappath(strFolder)

Set objFSO = CreateObject("Scripting.FileSystemObject")

' 检查文件夹是否存在

If objFSO.FolderExists(strTestFolder) Then

response.write "该文件夹已经存在!"

Else

Dim strTestFolder, objFSO

strTestFolder = Server.Mappath(strFolder)

Set objFSO = CreateObject("Scripting.FileSystemObject")

' 建立文件夹

objFSO.CreateFolder(strTestFolder)

Set objFSO = Nothing

End If

End Sub

%></td>

</tr>

</table></td>

</tr></form>

</table>

</body>

</html>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6646403.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存