sql数据库还原问题,高手救命啊。

sufangzhong 2004-05-13 08:08:09
我用很多人都介绍的方法,在数据中建立killspid存储过程,以强行杀掉数据库当前所的使用进程
然后
在代码中调用killspid存储过程!
use master
go
create proc killspid (@dbname varchar(20))
as
begin
declare @sql nvarchar(500),@temp varchar(1000)
declare @spid int
set @sql='declare getspid cursor for
select spid from sysprocesses where dbid=db_id('''+@dbname+''')'
exec (@sql)
open getspid
fetch next from getspid into @spid
while @@fetch_status =0
begin
set @temp='kill '+rtrim(@spid)
exec(@temp)
fetch next from getspid into @spid
end
close getspid
deallocate getspid
end
以上的存储过程我放在master数据库上.
然后我在查询分析器上输入
use master
exec killspid '数据库名' //这里的数据库名我输入的是要还原的数据库名称,假设是student,查询分析器也提示编译通过了.
然后我在程序中是这样调用上面的存储过程的:

Dim sConnectionString As String = _
"data source=localhost;initial catalog=master;integrated security=SSPI;persist security info=False;workstation id=XIER-7Y049H16BQ;packet size=4096"
Dim sqlConn As New SqlConnection(sConnectionString)
Dim myCmd As New SqlCommand()
With myCmd
.Connection = sqlConn
.CommandText = "killspid"
.CommandType = CommandType.StoredProcedure
End With
Dim prmSql As SqlParameter = myCmd.Parameters.Add("@dbname", "student")
prmSql.Direction = ParameterDirection.Input
sqlConn.Open()
myCmd.ExecuteNonQuery()
sqlConn.Close()
然后是执行还原的语句:
Dim sqldmo As New SQLDMO.SQLServer()
sqldmo.LoginTimeout = 15

sqldmo.Connect("(local)", "sa", "")
Dim sqlrestore As New SQLDMO.Restore()
sqlrestore.Action = 0
sqlrestore.Database = "student"
sqlrestore.Files = "d:\test.bak"
sqlrestore.ReplaceDatabase = True
sqlrestore.SQLRestore(sqldmo)
上面的代码我是放在同一个button事件中的,但是如果其他程序连接到同一个数据库的时候,我执行上面的过程,还是一直会出现"当前数据库正在使用,你不能获得排它访问权",大家帮帮忙,认真的帮我检查一下可能哪里错了.
...全文
47 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
DataSet1 2004-05-13
  • 打赏
  • 举报
回复
计算机欺负你啦
没办法
sufangzhong 2004-05-13
  • 打赏
  • 举报
回复
楼上的方法我试了,还是提示一样的错误啊.
SqlDataAdapter 2004-05-13
  • 打赏
  • 举报
回复
不用啊,用restor语句就行了,不过在前面加上一个use master 就可以了,我是这样做的.
thinkingforever 2004-05-13
  • 打赏
  • 举报
回复

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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