Sql server 允许使用自定义权限查看数据库

Sql server 允许使用自定义权限查看数据库,sql-server,database,Sql Server,Database,我一直在上下搜索谷歌,我觉得我已经接近解决方案,但我不知道如何搜索我的情况 标准 我需要创建一个用户(我们称之为user_a),它只能访问一个数据库中的一个视图 用户_A不应有权读取数据库中的任何其他数据 在使用SSMS或其他工具时,用户_A应该无法看到sql server上的任何数据库,但它可以访问的数据库除外 我发现了什么 已创建用户_A 为用户_授予了服务器和数据库上的Connect权限 使用视图上的选择权限在数据库上创建数据库角色 已将用户分配给所述的数据库角色 这就是我陷入困境

我一直在上下搜索谷歌,我觉得我已经接近解决方案,但我不知道如何搜索我的情况

标准
  • 我需要创建一个用户(我们称之为user_a),它只能访问一个数据库中的一个视图
  • 用户_A不应有权读取数据库中的任何其他数据
  • 在使用SSMS或其他工具时,用户_A应该无法看到sql server上的任何数据库,但它可以访问的数据库除外
我发现了什么
  • 已创建用户_A
  • 为用户_授予了服务器和数据库上的
    Connect
    权限
  • 使用视图上的
    选择
    权限在数据库上创建
    数据库角色
  • 已将用户分配给所述的
    数据库角色
这就是我陷入困境的地方,经过数小时的研究,我发现了关于
拒绝用户查看任何数据库的问题。然而,我的研究基本上引导我到了用户需要
db\u所有者
才能在SSMS中查看数据库的地方。显然,这是不可行的,除非有一种方法可以轻易地拒绝访问除视图之外的所有内容

问题 如果用户决定使用SSM或其他类似工具,我如何允许用户_A查看其自定义访问的唯一数据库

妥协 如果我必须
拒绝向公众查看任何数据库
,然后重新编辑每个用户以恢复对其各自数据库的可见性,我会这样做。我只需要知道处理这个问题的最佳方法,我会使用符合我要求的解决方案


提前谢谢你

为什么你希望一个只能访问一个视图的用户使用SSMS???数据库将始终在SSMS的下拉列表中可用,但当选择一个数据库时,它们没有访问权限,连接将失败。在我看来,有这么多限制的用户没有权利知道数据库连接信息。哇!谢谢你的非建设性评论。你看,我们有一个第三方供应商需要访问我们的一些数据。通过在视图中显示这些数据就足够了。我们将来可能会补充更多意见。我之所以想阻止SSMS上的可见性,是因为当第三方公司使用通过链接服务器连接到我们时,他们看不到他们不需要看到的内容。如果同事变得好奇,他们不一定会看到他们不需要看到的东西。更安全/过度安全有什么错?将来,请尝试帮助而不是批评。SSMS中的下拉列表中始终可以使用数据库,但当选择一个数据库时,他们没有访问权限,将无法建立连接。您可以允许连接所需的一个数据库,并且只允许读取所需的一个视图。谢谢。好的,很有趣。当我知道我在共享SQL SERVER环境中,但我只看到我的数据库时,其他服务提供商如何做到这一点?这是否导致
拒绝向公众查看任何数据库
,但我的用户帐户拥有
数据库所有者
?或者还有其他我不熟悉的机制吗?我不知道如何防止下拉列表显示实例上的所有数据库。即使是那些你不需要访问的用户。为什么你希望一个只能访问一个视图的用户使用SSM???数据库将始终在SSMS的下拉列表中可用,但当选择一个数据库时,它们没有访问权限,连接将失败。在我看来,有这么多限制的用户没有权利知道数据库连接信息。哇!谢谢你的非建设性评论。你看,我们有一个第三方供应商需要访问我们的一些数据。通过在视图中显示这些数据就足够了。我们将来可能会补充更多意见。我之所以想阻止SSMS上的可见性,是因为当第三方公司使用通过链接服务器连接到我们时,他们看不到他们不需要看到的内容。如果同事变得好奇,他们不一定会看到他们不需要看到的东西。更安全/过度安全有什么错?将来,请尝试帮助而不是批评。SSMS中的下拉列表中始终可以使用数据库,但当选择一个数据库时,他们没有访问权限,将无法建立连接。您可以允许连接所需的一个数据库,并且只允许读取所需的一个视图。谢谢。好的,很有趣。当我知道我在共享SQL SERVER环境中,但我只看到我的数据库时,其他服务提供商如何做到这一点?这是否导致
拒绝向公众查看任何数据库
,但我的用户帐户拥有
数据库所有者
?或者还有其他我不熟悉的机制吗?我不知道如何防止下拉列表显示实例上的所有数据库。甚至那些你不必访问的。