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

sp_setsuspect_granularity

语法


sp_setsuspect_granularity [<dbname> 
	[, "database" | "page" [, "read_only"]]]

参数

<dbname>

是数据库的名称,就是要显示或设置该数据库的恢复故障隔离模式。对于显示,缺省为当前数据库。对于设置,您必须在 master 数据库中并指定目标 <dbname>

database

如果恢复进程检测到其任何数据的状态为可疑,则将整个数据库标记为可疑,使其不可访问。

page

如果恢复进程检测到数据库中有损坏的数据,则只将损坏的页标记为可疑,使那些页不可访问。但仍可访问其余的数据。

read_only

如果指定,在恢复进程将任何页标记为可疑时,将整个数据库标记为 read only。

示例

示例 1

显示当前数据库的恢复故障隔离模式:


sp_setsuspect_granularity

DB Name  Cur. Suspect Gran.  Cfg. Suspect Gran.  Online mode
-------  ------------------  ------------------  -----------
pubs2    database           database           read/write

示例 2

显示 pubs2 数据库的当前恢复故障隔离模式和配置的恢复故障隔离模式:


sp_setsuspect_granularity pubs2

示例 3

下次在 pubs2 数据库中运行恢复时,如果检测到任何损坏页,只会使可疑页脱机,而将该数据库中其余的部分联机:


sp_setsuspect_granularity pubs2, "page"

DB Name       Cur. Suspect Gran. Cfg. Suspect Gran.
------------- ------------------ -----------------
pubs2          database             database
sp_setsuspect_granularity: The new values will become effective
    during the next recovery of the database ’pubs2’.

示例 4

下次在 pubs2 数据库中运行恢复时,如果检测到任何损坏页,只会使可疑页脱机,而仍会以只读模式使该数据库中其余的部分联机:


sp_setsuspect_granularity pubs2, "page", "read_only"

示例 5

下次在 pubs2 数据库中运行恢复时,如果检测到任何损坏数据,将把整个数据库标记为可疑并使其脱机:


sp_setsuspect_granularity pubs2, "database"

用法

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

  • sp_setsuspect_granularity 显示和设置恢复故障隔离模式。该模式控制恢复进程在检测到它所需要的任何数据已损坏时,将整个数据库标记为可疑,还是只将损坏页标记为可疑。

  • 用户数据库的缺省恢复故障隔离模式为“database”。只能设置用户数据库的恢复故障隔离模式,而不能设置系统数据库的恢复故障隔离模式。

  • Cluster Edition 仅允许 database 选项与 sp_setsuspect_granularity 搭配使用。

  • 您必须在 master 数据库中才能设置故障恢复隔离模式。

  • 因损坏而标记为可疑的数据在 SAP ASE 服务器启动过程中将保持其状态。如果某些页已被标记为可疑,在重新启动服务器后它们仍保持脱机状态。

  • 如果数据库的一部分或整个数据库被标记为可疑,用户将无法访问可疑数据,除非系统管理员使用 sp_forceonline_db 和 sp_forceonline_page 过程使可疑数据可访问。

  • 即使恢复故障隔离模式为“page”,一般数据库损坏(例如,数据库日志损坏或不特定于某一页的其它资源不可用)也会导致整个数据库被标记为可疑。

  • 如果不指定 page 或 database,SAP ASE 服务器将显示当前设置和配置的设置。当前设置是上次在该数据库中执行恢复时生效的那个设置。配置的设置是下次在该数据库中执行恢复时生效的那个设置。

  • 如果数据库以 read_only 模式联机,任何用户都不能修改数据库中的任何数据,包括不受可疑页影响并因此而联机的数据。但是,系统管理员可以使用 sp_dboption 系统过程将 read only 设置为 false,使数据库可写。这种情况下,用户可以修改联机数据,但可疑数据仍不可访问。