急急~~~ASP备份和恢复SQL数据库的 *** 作方法

急急~~~ASP备份和恢复SQL数据库的 *** 作方法,第1张

这串代码是我给你的吧,当时我是从那参考资料里摘出来的,这段代码备份的时候没有关闭数据库连接。你刚刚备份完就恢复,当然要出错了,你改为下面的,然后重起下IIS和SQL SERVER试试看。

1、备份

<%

SQL="backup database 数据库名 to disk='"&Server.MapPath("backup")&"\"&"backuptext.dat"&"'"

set cnn=Server.createobject("adodb.connection")

cnn.open "driver={SQL Server}Server=服务器名uid=sapwd="

cnn.execute SQL

on error resume next

if err<>0 then

response.write "错误:"&err.Descripting

else

response.write "数据备份成功!"

end if

cnn.close

set cnn=nothing

%>

2、恢复

<%

SQL="Restore database 数据库名 from disk='"&Server.MapPath("backup")&"\"&"backuptext.dat"&"'"

set cnn=Server.createobject("adodb.connection")

cnn.open "driver={SQL Server}Server=服务器名uid=sapwd="

cnn.execute SQL

on error resume next

if err<>0 then

response.write "错误:"&err.Descripting

else

response.write "数据恢复成功!"

end if

cnn.close

set cnn=nothing

%>

DMO才能解决你的问题:

SQLDMO.Restore objRestore = new SQLDMO.RestoreClass()

SQLDMO.SQLServer objSQLServer = new SQLDMO.SQLServerClass()

objRestore.Action = 0

SQLDMO.RestoreSink_PercentCompleteEventHandler pceh = new SQLDMO.RestoreSink_PercentCompleteEventHandler(Step)

objRestore.PercentComplete += pceh

try

{

objSQLServer.Connect("ServerName","UId","Upassword")

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

int iColPIDNum = -1

int iColDbName = -1

//杀死其它的连接进程

for(int idj=1idj<=qr.Columnsidj++)

{

string strName = qr.get_ColumnName(idj)

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

{

iColPIDNum = idj

}

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

{

iColDbName = idj

}

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

break

}

for(int idx=1idx<=qr.Rowsidx++)

{

int lPID = qr.GetColumnLong(idx,iColPIDNum)

string strDBName = qr.GetColumnString(idx,iColDbName)

if (strDBName.ToUpper() == "CgRecord".ToUpper())

objSQLServer.KillProcess(lPID)

}

objRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database

objRestore.Database = "DatabaseName"

objRestore.Files = "备份文件全路径"

objRestore.FileNumber = 1

objRestore.ReplaceDatabase = true

objRestore.SQLRestore(objSQLServer)

}

catch(System.Exception ex)

{

MessageBox.Show("数据还原失败: " + ex.ToString())

}

finally

{

objSQLServer.DisConnect()

}

}

{string con_str = ConfigurationManager.ConnectionStrings["carsConnectionString3"].ToString()

SqlConnection conn = new SqlConnection(con_str)

还原时,你打开的是cars的连接,怎么还原呀,应该打开master库才行。

cmdRT.CommandText = @"restore database cars from disk= '..\Backup\cars" + ".bak'" + "WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10"

这个语句,你在企业管理器或查询分析器中运行过了吗,数据库已经有了,必须强制还原才行,参照一下,是vb的,呵呵


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存