验证数据库是否已为在可移动介质上分发而正确配置,并向用户报告所有问题。
sp_certify_removable [ @dbname = ] 'dbname'
[ , [ @autofix = ] 'auto' ]
[@dbname =] 'dbname'
指定要验证的数据库。dbname 的数据类型为 sysname。
[@autofix =] 'auto'
对系统管理员授予数据库及所有数据库对象的所有权,并除去任何用户创建的数据库用户及非默认的权限。auto 的数据类型为 nvarchar(4),默认值为 NULL。auto 的值为 auto。
0(成功)或 1(失败)
如果数据库配置正确,sp_certify_removable 会将数据库设置为脱机,以便复制文件。此过程将更新所有表的统计信息,并报告任何所有权问题或用户问题。此外,还将数据文件组标记为只读,以便将这些文件复制到只读介质。
系统管理员必须是数据库和所有数据库对象的所有者。系统管理员是存在于所有正在运行 Microsoft® SQL Server™ 的服务器上的已知用户,在稍后分发和安装数据库时可望仍然存在。
如果运行没有 auto 值的 sp_certify_removable,并且返回信息表明系统管理员不是数据库的所有者、存在用户创建的用户、系统管理员未拥有数据库的所有对象、或授予非默认的权限,则可以通过以下两种方法纠正这些问题:
注意,此存储过程只检查用户和用户权限。允许向数据库添加组并对这些组授予权限。有关更多信息,请参见 GRANT。
此过程将验证信息写入文本文件,文件名的格式如下:
CertifyR_[dbname].txt
说明 xp_cmdshell 上的权限必须允许该文件写入。
EXECUTE 权限只授予 sysadmin 固定服务器角色的成员。
下面的示例验证 inventory 数据库已作好删除准备。
sp_certify_removable inventory, AUTO