zoukankan      html  css  js  c++  java
  • SQL2005 还原备份数据

    一,读取备份文件

    SQL:

    Restore filelistonly from disk=’’ 读取差异和完整备份文件

    Restore headeronly from disk=’’ 读取日志备份文件

    SQL Litespeed

    Master..xp_restore_filelistonly @Filename=’’读取差异和完整备份文件

    Master.. xp_restore_headeronly @Filename=’’ 读取日志备份文件

     

    如果结果没有返回错误,基本上备份文件就是正确的。

     

     

    注释:我们DB现在差异和完整备份一般都是用SQL Litespeed,日志备份用SQL.

    例如:

    Master..xp_restore_filelistonly @Filename='D:\PALBackUp\PAL_COMPSN_P80_DIFF20071008.BAK'----读取差异和完整备份文件

    Restore headeronly from disk='D:\PALBackUp\PAL_COMPSN_P80_LOG20071008.TRN' ---读取日志备份文件

     

    二、指定访问路径权限

    Exec master..xp_cmdshell 'net use \\172.26.40.6\d$ PWD /user:fp-qsmc\administrator'

     

    三、断开当前对DB PAL的操作

    Declare @SQLStr nchar(100)

    Declare @myspid smallint

    Declare @mycursor cursor

    Declare whocursor  cursor for

    Select spid from master..sysprocesses where dbid=db_id('PAL')

    Set @mycursor=whocursor

    Open @mycursor

    Fetch next from @mycursor into @myspid

    While @@fetch_status=0

    Begin

    --select @myspid

    Set @SQLStr='kill '+cast(@myspid as char(3))

    Execute sp_executesql @SQLStr

    Fetch next from @mycursor into @myspid

    End

    Close @mycursor

    Deallocate whocursor

     

    四、还原Full完整备份

    Declare @FullFileName Varchar(200)

    Set @FullFileName='\\172.26.40.6\d$\PALBackUp\PAL_COMPSN_P80_FULL20080914.BAK'

    EXEC master.dbo.xp_restore_database  

    @database='PAL',@Filename=@FullFileName,

    @with='Move "PAL_COMPSN_P80_Data" to "D:\PALFA\DataBase\PAL\PAL.MDF"',

    @with='Move "PAL_COMPSN_P80_Log" to "D:\PALFA\DataBase\PAL\PAL.LDF"',

    @with='standby="D:\PALFA\DataBase\PAL\UNDO_PAL.DAT"'

     

     

    执行完后就会在DB中出现一个备份/只读的PAL数据库。如果之前DB中存在一个可读写的PAL数据库,只需要更改语句为:

    Declare @FullFileName Varchar(200)

    Set @FullFileName='\\172.26.40.6\d$\PALBackUp\PAL_COMPSN_P80_FULL20080914.BAK'

    EXEC master.dbo.xp_restore_database  

    @database='PAL',@Filename=@FullFileName,

    @with='Move "PAL_Data" to "D:\PALFA\DataBase\PAL\PAL.MDF"',

    @with='Move "PAL_Log" to " D:\PALFA\DataBase\PAL\PAL.LDF"',

    @with='standby="D:\PALFA\DataBase\PAL\UNDO_PAL.DAT"',

    @with='replace'

    只是在结尾添加 ,@with='replace'这一句。

     

    五、还原Diff差异备份

    Declare @FullFileName Varchar(200)

    Set @FullFileName='\\172.26.40.6\d$\PALBackUp\PAL_COMPSN_P80_DIFF20080919.BAK'

    EXEC master.dbo.xp_restore_database  

    @database='PAL',@Filename=@FullFileName,

    @with='Move "PAL_COMPSN_P80_Data" to "D:\PALFA\DataBase\PAL\PAL.MDF"',

    @with='Move "PAL_COMPSN_P80_Log" to "D:\PALFA\DataBase\PAL\PAL.LDF"',

    @with='standby="D:\PALFA\DataBase\PAL\UNDO_PAL.DAT"'

    ---@with='recovery'

     

    @with='standby="D:\PALFA\DataBase\PAL\UNDO_PAL.DAT"'

    替换为@with='recovery'代表还原后数据库可读写

     

    六、还原Log日志备份

    1)Litespeed还原Log

    Declare @FileNum int

    SET @FileNum=5

    Declare @FullFileName Varchar(200)

    Set @FullFileName= '\\172.26.40.6\d$\PALBackUp\PAL_COMPSN_P80_LOG20080918.TRN'

    While @FileNum<=17

    BEGIN 

        EXEC master.dbo.xp_restore_log  

    @database='PAL',@Filename=@FullFileName,

              @filenumber=@FileNum,

              @with='standby=" D:\PALFA\DataBase\PAL\UNDO_PAL.DAT"'       

        SET @FileNum=@FileNum+1 

    END

     

    2)SQL还原Log

    Declare @i int

    Set @i=5

    while @i<18

    Begin

        Restore log PAL from disk='\\172.26.40.6\d$\PALBackUp\PAL_COMPSN_P80_LOG20080918.TRN' 

    with STANDBY='D:\PALFA\DataBase\PAL\UNDO_PAL.DAT',file=@i

        Set @i=@i+1

    End

     

    最后一个LOG

    Restore log PAL from disk='\\172.26.40.6\d$\PALBackUp\PAL_COMPSN_P80_LOG20080918.TRN '

    with recovery,file=18  ---最大的POSITION

    这样还原后数据库可读写

     

    七、Litespeed Point还原

    现在要求还原到2008-09-17 164500000 ,那么首先应该还原日志到FileNum 17,然后用这个17FileNum Point还原

     

    Declare @FileNum int

    SET @FileNum=18

    Declare @FullFileName Varchar(200)

    Set @FullFileName= '\\172.26.40.6\d$\PALBackUp\PAL_COMPSN_P80_LOG20080917.TRN'

    EXEC master.dbo.xp_restore_log

        @database='PAL_LORI',@Filename=@FullFileName,@WITH='RECOVERY',

        @filenumber=@FileNum,

        @with='STOPAT="2008-09-17 16:30:00.000"'

     

    ,映射账户

    PAL db执行下面语句后就可以把之前UIDqmsusersdsuser赋之前相对应的权限。

    sp_change_users_login 'Update_One','qmsuser','qmsuser'

    sp_change_users_login 'Update_One','sdsuser','sdsuser'

     

     

  • 相关阅读:
    前端工程化浅学
    jQuery学习
    黄金票据和白银票据获取域控权限
    [转]0day零距离
    [转]走近0day
    [转]人生如解 -- 关于破解组织的乱弹
    [转]WAREZ无形帝国
    [转]BSD系统正在死亡?一些安全研究人员这样认为
    Solaris:你好奇的十件事
    Windows和Office激活汇总
  • 原文地址:https://www.cnblogs.com/cuishao1985/p/1343368.html
Copyright © 2011-2022 走看看