Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server-隐藏数据库并限制用户仅查看一个视图对象_Sql_Sql Server_Database_View_Sql Server 2012 - Fatal编程技术网

SQL Server-隐藏数据库并限制用户仅查看一个视图对象

SQL Server-隐藏数据库并限制用户仅查看一个视图对象,sql,sql-server,database,view,sql-server-2012,Sql,Sql Server,Database,View,Sql Server 2012,根据标题,我想在SQL Server 2012中创建一个用户,该用户: 在其他数据库中只能看到1个数据库(比如TestDB) 在TestDB中的其他视图和表中只能看到1个视图(比如TestView) 为了隐藏所有其他数据库,我执行以下命令: USE master; DENY VIEW ANY DATABASE TO TestUser; Use TestDB; ALTER AUTHORIZATION ON DATABASE::TestDB TO TestUser; 现在,如何限制TestUser

根据标题,我想在SQL Server 2012中创建一个用户,该用户:

  • 在其他数据库中只能看到1个数据库(比如TestDB)
  • 在TestDB中的其他视图和表中只能看到1个视图(比如TestView)
  • 为了隐藏所有其他数据库,我执行以下命令:

    USE master;
    DENY VIEW ANY DATABASE TO TestUser;
    Use TestDB;
    ALTER AUTHORIZATION ON DATABASE::TestDB TO TestUser;
    

    现在,如何限制TestUser仅查看TestView(拒绝其他表和视图)?

    您必须在除TestView之外的所有视图上设置拒绝视图定义

      DENY VIEW DEFINITION ON NonTestView TO TestUser
    

    所以我需要对所有视图和表逐个执行操作?如果有,思考可能有更有效的方法。您可以使用[INFORMATION_SCHEMA].[VIEWS]创建语句。如下所示:从[INFORMATION\u SCHEMA].[VIEWS]中选择“拒绝对“+TABLE\u NAME+”的视图定义,以测试用户”。只需删除TestView的结果。