• 数据库还原备忘录!!!


    今天公司数据库又被注入,我¥……——(……¥……——*%……(*%……——¥%……
    还原的时候又出现了那个问题““数据库正在使用,所以无法获得对数据库的独占访问权”。”,忘记第一次被注入的时候还原是怎么被解决的话,又花了一个上午的时间搜索解决方法,现已解决,做下记录,以备后用。

    14.6.1  恢复中的单用户模式问题
    1.故障现象

    在在线恢复数据库时,出现如图14-31所示界面,提示“数据库正在使用,所以无法获得对数据库的独占访问权”。



    图14-31 

    故障现象
    2.原因分析

    这是因为在还原数据库时,有其他用户正在使用数据库。还原数据库要求数据库工作在单用户模式。

    通常就是DBA在操作时,不允许其他用户连接数据库。
    3.解决方法

    配置数据库的属性,在如图14-32所示的【选项】选项卡中,设置【限制访问】参数为“Single”即可。



    图14-32 【选项】选项卡

    设置完毕查看数据库的状态如图14-33所示,表明成功将数据库设置为单用户模式。

    图14-33  成功设置数据库为单用户模式

    另也搜索出另一解决方案,好像记得我第一次被注入时还原数据库就是用这种方法的吧。
    在还原数据库时,有时会提示因为数据库正在使用,所以无法获得对数据库的独占访问权!!
    这时需要在还原数据库前先杀死正在使用数据库得线程.

    如以下杀死正在使用
    'Calendar3'数据库的线程:

    declare @dbname varchar(20)
    set @dbname='Calendar3'

    declare @sql nvarchar(500)
    declare @spid int--SPID 值是当用户进行连接时指派给该连接的一个唯一的整数
    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<>-1--如果FETCH 语句没有执行失败或此行不在结果集中。
    begin
    exec('kill '+@spid)--终止正常连接
    fetch next from getspid into @spid
    end
    close getspid
    deallocate getspid
    撸码:复制、粘贴,拿起键盘就是“干”!!!
  • 相关阅读:
    URAL1996 Cipher Message 3(KMP + FFT)
    UVa12633 Super Rooks on Chessboard(容斥 + FFT)
    SPOJ TSUM Triple Sums(FFT + 容斥)
    UVa12298 Super Poker II(母函数 + FFT)
    LA4671 K-neighbor substrings(FFT + 字符串Hash)
    HDU4080 Stammering Aliens(二分 + 后缀数组)
    HDU4609 3-idiots(母函数 + FFT)
    HDU1402 A * B Problem Plus(FFT)
    快速傅里叶变换FFT学习小记
    HDU4971 A simple brute force problem.(强连通分量缩点 + 最大权闭合子图)
  • 原文地址:https://www.cnblogs.com/niunan/p/1559472.html
Copyright © 2020-2023  润新知