我有一个有趣的问题!让我为你搭建一个舞台:
1) Windows身份验证
2)已经为登录名为XCORP\USERA的用户设置了默认架构标识set
3)已经为登录名为XCORP\USERA的用户设置了默认数据库标识set
4) XCORP\USERA没有sysadmin
5) XCORP\USERA是数据库的所有者
6)尝试运行新的数据库安装脚本(关闭并重建数据库)
好的,正如我提到的-出于以下原因,这很有趣-我有一个DB帐户(我们将其称为IdentityIQUSER),它使用SQL Login身份验证,具有完全相同的设置,工作正常!(完全相同的设置意味着我可以在漂亮的小方框中选中和取消选中)我可以使用SQL帐户进行呼叫,而不会出现任何问题。只有当我使用windows帐户时,我才会发现问题。在做了一些自我反省之后,我运行了下面的命令,它将我带到了出错的地方(可能是登录)选择SCHEMA_NAME();有趣的是,返回的不是身份,而是dbo,所以我做了进一步的挖掘,发现了大量有效的访问。如果有帮助的话,我可以提供一个列表。所以这是我的三个问题。
问题1:是否可以授予任何有效的访问权限,使DBO成为默认模式(类似于sysadmin)
问题2: AD组能否控制您在服务器上获得的有效访问权限?如果这里的答案是肯定的,谁知道我如何跟踪AD中的哪个组正在授予这些有效的访问权限?
问题3:我从来没有深入到数据库中-所以我可能看不到正确的东西,那么如果这不是一个正确的前进方向,我还应该看哪里?
另外,顺便说一句,我想看看我是否可以用显式访问来覆盖有效的访问(因为我认为拒绝优先),并且恼人的是,当我重新登录时,我所有的访问都已经恢复了……我可能是第一个抱怨访问太多的人。哈哈,谢谢你抽出时间来看看。
发布于 2020-02-18 14:05:05
好的,经过大量的故障排除和挖掘,我们找到了答案!我们知道,来自AD的组可以设置sysadmin,这将覆盖任何本机设置的内容。但是,我们不知道的是,如果通过连接到此组的MSSQL接口创建和添加帐户,则该帐户也将具有该服务器角色,即使在本地处于关闭状态。所以让我更简洁地解释一下。
步骤1: A组设置为携带sysadmin角色,为AD组,已加入MSSQL。组A-包含XCORP\USER1
Step2: xcorpuser1将xcorpuser2添加到MSSQL。
按照这个顺序,XCORP\USER2现在永久地成为sysadmin角色的一部分……我不知道为什么要遵循这个逻辑,但它是最终结果。
因此,要解决这个问题:
步骤1:使用不属于包含sysadmin角色的组的帐户步骤2:添加另一个域用户步骤3:庆祝您拥有普通帐户。
https://stackoverflow.com/questions/60234729
复制相似问题