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

Posted

技术标签:

【中文标题】SQL Server - 隐藏数据库并限制用户只能看到一个视图对象【英文标题】:SQL Server - Hide databases and limit user to see one View object only 【发布时间】:2015-01-27 08:38:03 【问题描述】:

根据标题,我想在 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(拒绝其他表和视图)?

【问题讨论】:

【参考方案1】:

您必须在除 TestView 之外的所有视图上设置 DENY VIEW DEFINITION。

  DENY VIEW DEFINITION ON NonTestView TO TestUser

【讨论】:

那么我需要对所有的视图和表格一一做吗?如果有的话,思想可能有更有效的方法。 您可以使用 [INFORMATION_SCHEMA].[VIEWS] 创建语句。像这样:从 [INFORMATION_SCHEMA].[VIEWS] 中选择 'DENY VIEW DEFINITION ON' + TABLE_NAME + ' TO TestUser'。只需删除 TestView 的结果。

以上是关于SQL Server - 隐藏数据库并限制用户只能看到一个视图对象的主要内容,如果未能解决你的问题,请参考以下文章

无法限制用户使用内置 SQL Server 函数

在 SQL Server 2008 R2 中为特定数据库用户设置最大查询数

sql server存储过程编程

SQL server设置用户只能访问特定数据库访问特定表或视图

Sql Server怎样设置sa用户登录

SQL server基础SQL存储过程和函数的区别