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

sp_forceonline_object

语法


sp_forceonline_object <dbname>, <objname>, <indid>,
	{sa_on | sa_off | all_users}[, no_print]

参数

<dbname>

是包含要使其联机的索引的数据库的名称。

<objname>

是表的名称。

<indid>

是要联机的可疑索引的索引 ID。

sa_on

只允许具有 sa_role 的用户访问指定的索引。

sa_off

撤消以前通过 sa_on 调用 sp_forceonline_object 创建的访问特权。

all_users

允许所有用户访问指定的索引。

no_print

使指定的对象联机后,不输出其它可疑对象的列表。

示例

示例 1

允许系统管理员访问 pubs2 数据库中 titles 表上具有 indid 3 的索引:


sp_forceonline_object pubs2, titles, 3 , sa_on

示例 2

撤消系统管理员对索引的访问权限。现在,所有人都不能访问该索引:


sp_forceonline_object pubs2, titles, 3, sa_off

示例 3

允许所有用户访问 pubs2 数据库中 titles 表上的索引:


sp_forceonline_object pubs2, titles, 3, all_users

用法

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

  • 如果仅数据锁定表上的索引具有可疑页,则整个索引将在恢复期间脱机。查询优化程序将不考虑脱机索引。恢复期间不会使全页锁定表上的索引完全脱机;只有这些索引的个别页会脱机。使用 sp_forceonline_page 将这些页联机。

  • 使用 sp_listsuspect_object 可查看脱机的数据库列表。

  • 若要修复可疑索引,请使用具有 sa_on 访问权限的 sp_forceonline_object。然后,删除并重新创建索引。

    ⚠️

    如果索引位于 systabstats 或 sysstatistics(仅有的 DOL 系统表)上,请致电 Sybase 技术支持部门。

  • 无法撤消带有 all_users 的 sp_forceonline_object。如果已将索引联机使之供所有用户访问,则不能使其脱机。

  • 由于可以强制损坏的索引联机,因此不一定要修复被强制联机的索引。SAP ASE 服务器不对强制联机的索引执行一致性检查。

  • sp_forceonline_object 不能在事务中使用。

  • sp_forceonline_object 仅用于其恢复故障隔离模式是“page”的数据库。使用 sp_setsuspect_granularity 可显示数据库的恢复故障隔离模式。

  • 若要通过单个命令使数据库的所有脱机页和索引联机,请使用 sp_forceonline_db。