2017-06-12 44 views
0

在SQL Server MNGT Studio 2012中,我们有一个数据库,我们只想授予特定用户只读访问权限。灰色'编辑前200行'SSMS

所以我(作为一个管理员),登录到服务器..为了讨论各种情形,数据库名称为SQLSERVER01

然后登录后我看到DatabasesSecurityServer ObjectsReplicationManagementSQL Server Agent。我进入Security选项卡并转到Logins。我们想给予只读权限的用户已经有了一个登录名。所以我双击他们的登录。我去User Mapping。找到我想给他们的只读访问权限的数据库。我点击数据库名称旁边的复选框,在下面我给用户db_datareaderpublic

因此,我打电话给用户,他们能够看到数据库中的表,但是如果他们要右键单击表名,他们仍然可以看到Edit Top 200 Rows这个选项,然后单击它并请参阅该表格的编辑gui。现在我没有测试输入数据,看看他们是否可以真正编辑或添加数据,因为这太冒险了。

所以我的问题是,我给这个用户正确的访问?如果是这样,我该如何选择“编辑排行200行”?如果不是,我需要做什么?

任何帮助表示赞赏。

+1

有服务器角色和数据库角色。 db_datareader是一个数据库角色。你确定他们没有任何服务器角色(如sysadmin)可能会给他们额外的权限吗?我不知道该菜单的具体行为,但不能仅仅测试一个不同的数据库? –

+0

@snow_FFFFFF我检查了服务器角色。此用户不在其中,包括系统管理员。 –

回答

1

SSMS不查询权限来确定用户的功能或UI选项。例如,您可能没有DDL修改特权,但它可以让您尝试编写alter/create语句的脚本。您不能删除编辑行选项,但如果他们没有权限,则在尝试将焦点从其编辑的行移开时,提交将失败。

如果你想看到你可以使用这个功能来查看生成的补助层有效允许/拒绝: https://docs.microsoft.com/en-us/sql/relational-databases/system-functions/sys-fn-my-permissions-transact-sql

一般情况下,确保用户的登录具有最小的权限,然后在使用角色先前已经审查/测试过的数据库级别。

+0

啊只是测试了一下。你是对的!当试图标签到下一行时,他们会被拒绝。我不知道为什么我没有在自己的大声笑上测试,但无论如何感谢! –