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 2008 R2 中为特定数据库用户设置最大查询数