数据库恢复的问题 大家来看看 100分

aquariua 2009-09-14 06:52:03
在ASP里面用 用程序写的备份数据库和恢复数据库的时候, 在恢复数据库时 要是有连接就无法恢复提示


Microsoft SQL-DMO (ODBC SQLState: 42000) 错误 '800a0c1d'

[Microsoft][ODBC SQL Server Driver][SQL Server]因为数据库正在使用,所以未能获得对数据库的排它访问权。 [Microsoft][ODBC SQL Server Driver][SQL Server]RESTORE DATABASE 操作异常终止。


就是有用户还在连接这个数据库,现在我想在恢复之前 把连接到这个数据库的所有用户全部断掉 用ASP程序来写谁做过发下给我或知道怎么做也来教下我,先谢谢啦!希望得到很多人的帮助
...全文
93 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
aquariua 2009-10-10
  • 打赏
  • 举报
回复
谢谢大家!!
mailbao 2009-09-15
  • 打赏
  • 举报
回复
sql數據庫,為什麼不直接在sql管理器上實現自動備份呢?
凡夫与俗子 2009-09-15
  • 打赏
  • 举报
回复
没弄过,呵呵,帮顶下。
ximengchang 2009-09-15
  • 打赏
  • 举报
回复
建议还是手动操作吧,自己动执行可能出现问题的几率太高了
cueixu1 2009-09-14
  • 打赏
  • 举报
回复
因为时间关系不详细讲解了
下边代码能解决你说的这个问题
不过需要SQL 账号拥有进程管理权限
支持异地数据库本地恢复。

set conn=connobj
set pathrs=rsobj
pathrs.open "select filename from dbo.sysfiles",conn,1,1
mdf_path=trim(REPLACE(pathrs("filename"),"mdf","MDF"))
pathrs.movenext
log_path=trim(REPLACE(pathrs("filename"),"log","Log"))
kill pathrs
kill conn
set conn=Server.CreateObject("ADODB.CONNECTION")
conn.open "Driver={SQL Server};server="&sqlserverip&";uid="&sqlusername&";pwd="&sqluserpass&";;database=master"
'首先杀所有数据库进程
dbid = sqlval("select dbid from sysdatabases where name='"&sqldatabase&"'",conn)
nokill=false
if dbid<>"" then
set prs=rsobj
prs.open "select spid from sysprocesses where dbid="&dbid,conn,1,1
if not prs.bof and not prs.eof then
splist=prs.GetRows()
for splist_i=0 to ubound(splist,2)
On Error Resume Next
conn.execute "kill "&splist(0,splist_i)
If Err Then
err.Clear
nokill=true
exit for
end if
next
end if
kill prs
end if
On Error GoTo 0
set pathnamers=rsobj
pathnamers.open "restore filelistonly from disk='"&filename&"'",conn,1,1
mdf_Name=pathnamers("LogicalName")
pathnamers.movenext
log_Name=pathnamers("LogicalName")
kill pathnamers
conn.execute "set noexec off set parseonly off "
conn.execute "RESTORE DATABASE ["&sqldatabase&"] FROM DISK = N'"&filename&"' WITH FILE = 1, NOUNLOAD , STATS = 10, RECOVERY , REPLACE , MOVE N'"&mdf_Name&"' TO N'"&mdf_path&"', MOVE N'"&log_Name&"' TO N'"&log_path&"'"
conn.execute "use "&sqldatabase

syjeffdyg 2009-09-14
  • 打赏
  • 举报
回复
这个东东我弄了很久,不太好弄。有时能成功,有时不行,建议还是手动恢复数据库的好。

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧