none
能不能把 把完整备份和差异备份 放在不同的磁盘文件里,另外差异备份 里包含 日志备份吗? RRS feed

  • 问题

  • 1.对数据库【A】进行完整备份至文件【b1.bak】
    2.对数据库【A】进行差异备份至文件【b2.bak】

    然后用这两个备份还原

    2011年8月5日 5:37

答案

  • 我是習慣用TSQL指令來做backup和restore,如果你有興趣的話,可以參考下列做法,用的時候只要修改資料庫名稱和備份檔名即可。

    declare @db varchar(10) = 'Northwind' --資料庫名稱
    declare @fullbackupfile varchar(50) = 'd:\b1.bak'--完整備份檔案名稱
    declare @diffbackupfile varchar(50) = 'd:\b2.bak' --差異備份檔案名稱
    
    --完整備份
    exec ('backup database ' + @db + ' to disk = ''' + @fullbackupfile + '''')
    
    ----差異備份
    exec ('backup database ' + @db + ' to disk = ''' + @diffbackupfile + ''' with differential')
    
    --還原完整備份
    exec ('restore database ' + @db + ' from disk = ''' + @fullbackupfile + ''' with norecovery')
    --還原差異備份
    exec ('restore database ' + @db + ' from disk = ''' + @diffbackupfile + ''' with recovery')
    
    


     


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年8月5日 6:11
  • --還原完整備份
    exec ('restore database ' + @db + ' from disk = ''' + @fullbackupfile + ''' with norecovery')
    --還原差異備份
    exec ('restore database ' + @db + ' from disk = ''' + @diffbackupfile + ''' with recovery')

    就是在完整还原加个 with replace 不太明白

    另外

    能不能把完整和差异备份放在同一个语句里呢?

    差异备份是不是也像完整备份那样 包含了 事务日志备份呢


    2011年8月8日 7:43

全部回复

  • 我是習慣用TSQL指令來做backup和restore,如果你有興趣的話,可以參考下列做法,用的時候只要修改資料庫名稱和備份檔名即可。

    declare @db varchar(10) = 'Northwind' --資料庫名稱
    declare @fullbackupfile varchar(50) = 'd:\b1.bak'--完整備份檔案名稱
    declare @diffbackupfile varchar(50) = 'd:\b2.bak' --差異備份檔案名稱
    
    --完整備份
    exec ('backup database ' + @db + ' to disk = ''' + @fullbackupfile + '''')
    
    ----差異備份
    exec ('backup database ' + @db + ' to disk = ''' + @diffbackupfile + ''' with differential')
    
    --還原完整備份
    exec ('restore database ' + @db + ' from disk = ''' + @fullbackupfile + ''' with norecovery')
    --還原差異備份
    exec ('restore database ' + @db + ' from disk = ''' + @diffbackupfile + ''' with recovery')
    
    


     


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年8月5日 6:11
  • 楼主你好,完整备份和差异备份是可以放在不同磁盘文件里的,具体语句如下:
    完整备份
    BACKUP DATABASE TEST
    TO DISK='c:\1\testfull.BAK'
    WITH  DESCRIPTION ='TEST FULL BACKUP'
    差异备份
    BACKUP DATABASE TEST
    TO DISK='d:\1\testdifferent.BAK'
    WITH DIFFERENTIAL, DESCRIPTION ='TEST DIFFERENTIAL BACKUP'

    差异备份和日志备份是两个独立的备份过程,进行差异备份的时候是不会自动进行日志备份的

    • 已建议为答案 Maggie Luo 2011年8月5日 6:26
    2011年8月5日 6:26
  • 无法还原 系统报错

    2011年8月5日 8:45
  • 无法还原 系统报错

    請問你怎麼還原?
    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年8月5日 8:52
  • 可以把报错信息发上来参考吗?
    2011年8月5日 8:54
  • 还原了 谢谢
    2011年8月5日 9:29
  • 还原了 谢谢
    不好意思,請問你剛沒辦法還原的錯誤訊息是什麼?你又是怎麼解決的,如果你不反對的話,或可以把你解決的經過貼上來,這樣以後遇到相同問題的人可以有個參考,謝謝。
    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年8月5日 9:40
  • 楼主你好,完整备份和差异备份是可以放在不同磁盘文件里的,具体语句如下:
    完整备份
    BACKUP DATABASE TEST
    TO DISK='c:\1\testfull.BAK'
    WITH  DESCRIPTION ='TEST FULL BACKUP'
    差异备份
    BACKUP DATABASE TEST
    TO DISK='d:\1\testdifferent.BAK'
    WITH DIFFERENTIAL, DESCRIPTION ='TEST DIFFERENTIAL BACKUP'

    差异备份和日志备份是两个独立的备份过程,进行差异备份的时候是不会自动进行日志备份的

    Both full backup and diff backup contain logs since last backup, although they don't generate log backup file.
    2011年8月5日 13:32
  • --還原完整備份
    exec ('restore database ' + @db + ' from disk = ''' + @fullbackupfile + ''' with norecovery')
    --還原差異備份
    exec ('restore database ' + @db + ' from disk = ''' + @diffbackupfile + ''' with recovery')

    就是在完整还原加个 with replace 不太明白

    另外

    能不能把完整和差异备份放在同一个语句里呢?

    差异备份是不是也像完整备份那样 包含了 事务日志备份呢


    2011年8月8日 7:43
  • --還原完整備份
    exec ('restore database ' + @db + ' from disk = ''' + @fullbackupfile + ''' with norecovery')
    --還原差異備份
    exec ('restore database ' + @db + ' from disk = ''' + @diffbackupfile + ''' with recovery')

    就是在完整还原加个 with replace 不太明白

    另外

    能不能把完整和差异备份放在同一个语句里呢?

    差异备份是不是也像完整备份那样 包含了 事务日志备份呢



    with replace 表示覆盖现有数据库
    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.
    2011年8月8日 7:53
  • --還原完整備份
    exec ('restore database ' + @db + ' from disk = ''' + @fullbackupfile + ''' with norecovery')
    --還原差異備份
    exec ('restore database ' + @db + ' from disk = ''' + @diffbackupfile + ''' with recovery')

    就是在完整还原加个 with replace 不太明白

    另外

    能不能把完整和差异备份放在同一个语句里呢?

    差异备份是不是也像完整备份那样 包含了 事务日志备份呢



    Can't use single statement to restore both full and diff backups. As I said above, diff backup contains logs since last backup too.
    2011年8月8日 13:51