您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

sp_dbrecovery_order

语法


sp_dbrecovery_order [<database_name>[, <rec_order>[, force[, relax | strict ]]]]

参数

<database_name>

是为其指派恢复顺序的数据库的名称或要列出其用户定义的恢复顺序的数据库的名称。

<rec_order>

是恢复数据库的顺序。若 <rec_order> 为 -1,则将从用户定义的恢复序列中删除指定的数据库。

force

允许用户将数据库插入现有恢复序列中,而不将该数据库放在末尾。

relax

指定在恢复数据库时创建数据库(缺省值)。

缺省值是 relax,这意味着在完成恢复后数据库立即进入联机状态。

strict

指定按恢复顺序指定数据库。

示例

示例 1

使 pubs2 数据库成为在系统故障后恢复的第一个用户数据库:


sp_dbrecovery_order pubs2, 1

示例 2

将 pubs3 数据库插入用户定义的恢复序列中的第三个位置。如果另一个数据库原先在第三个位置,则它将被移动到第四位,后面的所有数据库也相应向后移动:


sp_dbrecovery_order pubs3, 3, force

示例 3

从用户定义的恢复序列中删除 pubs2 数据库。这样,在恢复了具有用户指定的恢复顺序的所有数据库后才会恢复 pubs2:


sp_dbrecovery_order pubs2, -1

示例 4

列出具有恢复顺序(通过 sp_dbrecovery_order 指派)的所有数据库的当前恢复顺序:


sp_dbrecovery_order

用法

使用 sp_dbrecovery_order 时,还存在一些其它注意事项:

  • 只有在 master 数据库中才能使用 sp_dbrecovery_order 来输入或修改用户指定的恢复顺序。可以从任何数据库列出用户定义的数据库恢复顺序。

  • 要更改数据库的用户定义的恢复位置,请使用 sp_dbrecovery_order 将该数据库从恢复序列中删除,然后使用 sp_dbrecovery_order 将其插入新位置。

  • 系统数据库总是在用户数据库之前恢复。系统数据库和它们的恢复顺序是:

    1 master

    2 model

    3 tempdb

    4 sybsystemdb

    5 sybsecurity

    6 sybsystemprocs

  • 如果没有通过 sp_dbrecovery_order 为任何数据库指派恢复顺序,则先恢复系统数据库,然后按用户数据库的 ID 对所有用户数据库进行恢复。

  • 如果 <database_name>

    a 已指定但没有给出 <rec_order> – sp_dbrecovery_order 将显示指定数据库的用户定义的恢复位置。

    b 未指定 – sp_dbrecovery_order 将列出具有用户指派的恢复顺序的所有数据库的恢复顺序。

  • 通过 sp_dbrecovery_order 指派的恢复顺序必须是连续的,从 1 开始,值之间不存在间隔。必须将指派了恢复顺序的第一个数据库的 <rec_order> 指派为 1。如果有三个数据库的恢复顺序分别被指派为 1、2 和 3,则不能将下一个数据库的恢复顺序指派为 5。