首页 > 解决方案 > 如何防止特定用户访问我的 SQL 数据库中的特定表?

问题描述

我正在使用 SQL Server 2014,并且我有一个名为的数据库MyDatabase,其中包含多个表。我有一个名为的用户User1,他对数据库具有读取权限。

假设我想阻止User1访问一个名为tbl1(即查询或查看该表)的表,我该怎么做?

搜索StackOverflow,我遇到了这个问题:SQL Server : 你能限制对一个表的访问吗

按照该问题中公认的答案,我的 SQL 查询将如下所示:

exec sp_msforeachtable "DENY SELECT ON tbl1 TO [User1];"
GO

这是正确的方法吗?或者有没有更有效的方法来解决这个问题?

标签: sql-servertsqlpermissions

解决方案


无需使用 sp_msforeachtable。只涉及一张表,因此您可以通过发出来完成您的任务

DENY SELECT ON tableName TO [userName]

.. 或者

REVOKE SELECT ON OBJECT::[shemaName].[tableName] TO [userName]

推荐阅读