为什么A / D帐户需要SQL Serverlogin?

在理解Windows和SQL Server身份validation之间的区别时,我需要一些帮助:

我们有一个SQL Server 2008设置为SQL Server和Windows身份validation模式。

有一个A / D用户 – munis – 可以login到我们的SQL Server。 该用户在SQL Server中也具有Public和Sysadminangular色的login。

还有另外一个用户 – cnorton – 他们无法login到SQL Server,并且在SQL Server中没有本地login。

我认为Windows身份validation允许A / D(域)用户login到SQL Server。 用户cnorton拥有比用户munis更多的A / D特权,例如Domain Admin和Sysadmin。

所以我的问题是Windows和SQL Server身份validation模式需要本地SQL Serverlogin,为什么?

不,混合模式不需要两者,显然 – 它需要一个。

你的错误是认为AD证书自动允许SQL服务器访问; 他们不这样做,你还是要授予这个访问权限。 否则,Sql Server如何知道他们有多less访问?

为DOMAIN \ cnorton创build一个新的login,并将用户映射到某些数据库。

CREATE LOGIN 'DOMAIN\cnorton' FROM WINDOWS GO GRANT ALL PRIVILEGES ON YourDatabase To 'DOMAIN\cnorton' GO 

或者,您可以将此用户添加到固定的数据库angular色:

 USE YourDatabase GO ALTER ROLE db_owner ADD MEMBER 'DOMAIN\cnorton' 

SQL Server是一个应用程序。 Windows身份validation和SQL身份validation是将SQL Server作为应用程序进行身份validation的两种不同方法。 这两种types都需要用户主体以某种级别的访问来定义/创build。 这是一个login是。 您可以创build任一types的login,但必须创buildlogin并授予其某种级别的访问权限。

您仍然需要在AD服务器上为AD用户“cnorton”创build一个login名,但是您不需要为他创build一个密码。

在SSMS中,select您需要的服务器实例,然后在login下,右键单击并点击“新buildlogin…”

在对话框中,您可以按searchbutton,并search您的AD实例名称: 搜索对话框

在这种情况下,您可以看到我从AD实例中select了一个testing用户。 此用户将能够login到SSMS或根据您授予该login的SQL Server权限进行连接,只需通过该用户login到Windows即可。