我知道有人问了这个问题,但没有一个建议有帮助。我的Azure SQL Server上有多个用户的数据库。
有一个登录名“USER 1”和一个从该登录名创建的用户,该用户是“ASE 1”的所有者。
有一个登录名“USER 2”和一个从该登录名创建的用户,该用户是“ASE 2”的所有者
当USER 1连接到服务器时,它枚举/看到数据库ASE 2。它不能打开它,但可以看到它。
由sysadmin在主数据库或用户数据库上执行的以下命令不起作用:
DENY VIEW ANY DATABASE TO [PUBLIC]
或
DENY VIEW ANY DATABASE TO [USER1]
错误为:
'Securable class 'server' not supported in the server scope in this version of SQL Server.'
2条答案
按热度按时间wkyowqbh1#
你可以按照以下步骤限制Azure SQL DB中的用户。
当USER1连接到服务器时,它枚举/看到数据库ASE2。它不能打开它,但可以看到它。
使用以下脚本检查Azure SQL数据库上的VIEW ANY DATABASE。
这对于单个用户登录是可能的,因为您只能将数据库的所有权分配给单个用户并拒绝VIEW ANY DATABASE,如下所示,请参见
Hale
创建的Ms Doc1.右键单击用户数据库下的用户登录(如果存在)并将其删除。
(Note:不要从主安全登录帐户下删除用户)
2.运行以下查询。
你还可以从门户禁用对Azure SQL DB的公共访问,如下所示。
我可以只看到一个数据库,而不是其他数据库,一旦我登录到用户。
参考:如何隐藏用户无权访问的由-
Daniel
创建的Microsoft SQL数据库mec1mxoz2#
到目前为止,使用Azure SQL的唯一可能方法似乎是使用所谓的包含用户。用户必须在数据库级别创建,而不链接到登录。SQL中的任何登录都在SQL服务器级别,并且能够看到附加在该服务器上的数据库。(Azure SQL中的限制)
通过对所需数据库运行以下命令来创建用户:
现在要连接到数据库(而不是SQL服务器),应发生以下情况:在SQL Management Studio
中输入SQL服务器、用户名和密码
按“选项”按钮,然后在“连接属性”下输入用户需要登录的数据库名称。