sp_certify_removable (Transact-SQL)

适用于:SQL Server

验证是否正确配置数据库以便在可移动介质上分发,并向用户报告所有问题。

重要

在 SQL Server的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 请改用 CREATE DATABA标准版

Transact-SQL 语法约定

语法

sp_certify_removable
    [ @dbname = ] N'dbname'
    [ , [ @autofix = ] N'autofix' ]
[ ; ]

参数

[ @dbname = ] N'dbname'

指定要验证的数据库。 @dbnamesysname

[ @autofix = ] N'autofix'

对系统管理员授予数据库及所有数据库对象的所有权,并除去任何用户创建的数据库用户及非默认的权限。 @autofixnvarchar(4),默认值为 NULL.

返回代码值

0(成功)或 1(失败)。

注解

如果数据库配置正确, sp_certify_removable 请执行以下步骤:

  • 将数据库设置为脱机,以便复制文件。
  • 更新所有表的统计信息,并报告任何所有权问题或用户问题。
  • 将数据文件组标记为只读,以便将这些文件复制到只读介质中。

系统管理员必须是数据库和所有数据库对象的所有者。 系统管理员是运行 SQL Server 的所有服务器上存在的已知用户,在以后分发并安装数据库时,可以预期存在。

如果在不使用值的情况下AUTO运行sp_certify_removable,它将返回有关以下任何条件的信息:

  • 系统管理员不是数据库所有者。
  • 存在用户创建的任何用户。
  • 系统管理员不拥有数据库中的所有对象。
  • 已授予非默认权限。

可以使用下列方法更正这些情况:

  • 使用 SQL Server 工具和过程,然后再次运行 sp_certify_removable
  • 使用AUTO值运行sp_certify_removable

此存储过程仅检查用户和用户权限。 可以向数据库添加组并且对这些组授予权限。 有关详细信息,请参阅 GRANT (Transact-SQL)

权限

执行权限仅限于 sysadmin 固定服务器角色的成员

示例

下面的示例验证 inventory 数据库已准备好删除。

EXEC sp_certify_removable inventory, AUTO;