文档首页 > > 用户指南> SQL Server用户指南> 存储过程的使用>

限制子帐户只能看到具有权限的数据库清单

限制子帐户只能看到具有权限的数据库清单

分享
更新时间:2020/12/17 GMT+08:00

操作场景

使用存储过程,将某个自定义数据库的权限授予由rdsuser帐户创建的指定子帐户,并限制该帐户对其他数据库的可见性。限制之后,子帐户对不具权限的数据库不可见,也无法对其进行相关操作。

前提条件

成功连接RDS for Microsoft SQL Server实例。关于连接华为云关系型数据库实例,请参考连接实例

约束

  • 对于系统库,不可通过此存储过程进行授权给子帐户。如果您试图为子帐户授予系统库权限,系统将会有如下提示:
    Error DatabaseName. Please can not include in ('msdb','master','model','tempdb','rdsadmin') .
  • 对于系统管理员帐户,不可通过此存储过程进行授权。如果您试图为管理员帐户授予任意数据库权限,系统将会有如下提示:
    Error Login. Please can not include in ('rdsadmin','rdsmirror','rdsbackup','rdsuser') .
  • 若某个帐户已经是指定数据库的用户,不可再通过此存储过程对该帐户授予该数据库的权限。否则,系统将会有如下提示:
    The proposed new database owner is already a user or aliased in the database.

    这种情况下,您可以通过管理帐户“rdsuser”将该子帐户从该数据库中删除之后,再通过执行此存储过程进行授权。

  • 若某个帐户具有Create Any Database权限,则此存储过程对该帐户不生效。

操作步骤

执行以下命令,进行限制子帐户查看数据库权限。

EXEC rdsadmin.dbo.rds_AUTHORIZATION_DatabaseForLogin ‘@DBName’, ‘@Login’;

  • @ DBName:要授予权限的数据库。
  • @ Login:要授予权限的帐户。

为“user_1”帐户授予数据库“testDB_1”的权限,示例如下:

EXEC rdsadmin.dbo.rds_AUTHORIZATION_DatabaseForLogin ‘testDB_1’, ‘user_1’;

授权成功之后,user_1将具备testDB_1的权限,对其可见并可对其进行操作;并且对其余无权限数据库保持不可见且不可操作

分享:

    相关文档

    相关产品