none
SQL Server数据库一般的方式备份后,在还原的时候有办法使用snapshot吗? RRS feed

  • 问题

  • SQL Server数据库一般的方式备份后,在还原的时候有办法使用snapshot吗?备份只是一般的方式,但是还原的时候想使用with snapshot,这个有可能吗?
    2011年2月12日 8:32

答案

  • BlackAnt,

    数据库必须联机才能创建数据库快照。而且还原DB的语法没有with snapshot这个参数。

    如果想在还原的时候使用snapshot,我们可以
      1. 先正常把DB还原出来(不要使用with norecovery)
      2. 然后再对已还原出来的DB做一个快照,语法如下:

    create database testdb_snap_1
      on (name=testdb,filename='D:\testdb_snap_1.ss')
      as snapshot of testdb


    另外,使用数据库快照有如下需要注意的地方:

    1. 只有 SQL Server 2005、SQL Server 2008 和 SQL Server 2008 R2 的 Enterprise Edition 才提供数据库快照功能。
    2. 不能对源数据库进行删除、分离或还原,但可以备份源数据库。
    3. 不能从源数据库或任何快照中删除文件。
    4. 源数据库必须处于联机状态,除非该数据库在数据库镜像会话中是镜像数据库。
    5. 若要在镜像数据库中创建数据库快照,数据库必须处于同步镜像状态。
    6. 所有恢复模式都支持数据库快照。
    7. 不能备份、还原、附加或分离数据库快照。
    8. 不能在 FAT32 文件系统或 RAW 分区上创建数据库快照。


    Thanks, Yoyo Yu
    • 已编辑 冰凌 2011年2月14日 3:37 update
    • 已建议为答案 Ai-hua Qiu 2011年2月15日 6:51
    • 已标记为答案 Ai-hua Qiu 2011年2月21日 12:20
    2011年2月14日 3:37

全部回复

  • 没有 with snapshot 选项。

    只能根据快照来恢复数据库到快照时间点的状态。

    快照恢复语法:

    RESTORE DATABASE database_name FROM DATABASE_SNAPSHOT = database_snapshot_name


    family as water
    2011年2月12日 12:49
  • BlackAnt,

    数据库必须联机才能创建数据库快照。而且还原DB的语法没有with snapshot这个参数。

    如果想在还原的时候使用snapshot,我们可以
      1. 先正常把DB还原出来(不要使用with norecovery)
      2. 然后再对已还原出来的DB做一个快照,语法如下:

    create database testdb_snap_1
      on (name=testdb,filename='D:\testdb_snap_1.ss')
      as snapshot of testdb


    另外,使用数据库快照有如下需要注意的地方:

    1. 只有 SQL Server 2005、SQL Server 2008 和 SQL Server 2008 R2 的 Enterprise Edition 才提供数据库快照功能。
    2. 不能对源数据库进行删除、分离或还原,但可以备份源数据库。
    3. 不能从源数据库或任何快照中删除文件。
    4. 源数据库必须处于联机状态,除非该数据库在数据库镜像会话中是镜像数据库。
    5. 若要在镜像数据库中创建数据库快照,数据库必须处于同步镜像状态。
    6. 所有恢复模式都支持数据库快照。
    7. 不能备份、还原、附加或分离数据库快照。
    8. 不能在 FAT32 文件系统或 RAW 分区上创建数据库快照。


    Thanks, Yoyo Yu
    • 已编辑 冰凌 2011年2月14日 3:37 update
    • 已建议为答案 Ai-hua Qiu 2011年2月15日 6:51
    • 已标记为答案 Ai-hua Qiu 2011年2月21日 12:20
    2011年2月14日 3:37