![无法使用活动目录或 SQL 身份验证登录 SQL](https://linux22.com/image/788910/%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8%E6%B4%BB%E5%8A%A8%E7%9B%AE%E5%BD%95%E6%88%96%20SQL%20%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E7%99%BB%E5%BD%95%20SQL.png)
我正在安装 SQL 报告服务。安装后,数据库已正确创建并分配了用户权限。还创建了登录域\报告帐户。问题是当我尝试从 Visual Studio 连接时,我想使用相同的帐户,但当我尝试时,遇到了不同类型的身份验证问题:
Windows 身份验证,没有选择帐户>没问题,它使用我的帐户登录到服务器。
SQL 身份验证> domain\reportaccount > 用户“domain\reportaccount”登录失败(如果我使用我的帐户,也会失败)
Active Directory 密码验证> domain\reportaccount > 用户“登录失败”。 (如果我使用我的帐户,它也会失败)
Active Directory 集成身份验证, 没有选择账户 > 没关系
Active Directory 交互式身份验证, domain\reportaccount > 不要求输入密码
我想我应该使用 SQL 身份验证或 Active Directory 集成身份验证。
我的问题是,如果已经创建了登录并且数据库中具有正确的权限,为什么会失败?
答案1
首先,我谷歌搜索了“Active Directory 密码身份验证”,因为我从未听说过它。没有找到任何结果,但结果如下:
“AzureActive Directory 密码验证”
那么,这些是拼写错误吗?我将假设它们是拼写错误,并对其进行解释:
Windows 身份验证- 这是因为您登录到机器的帐户具有访问权限。
SQL 身份验证- 这是非常常见的误解。由于要求您提供用户名和密码,大多数人认为他们可以在此处输入他们的 Windows 帐户,但事实并非如此。SQL 有自己的内部用户数据库,当您使用 SQL 身份验证时,它会在 SQL 本身中查找用户,而不是 AD。您目前还不会在那里创建任何用户。例如,在 SQL Studio 中查看“用户”,然后您将能够创建一个SQL那里有“用户”。使用这种类型的身份验证时,您必须使用该用户。Windows 或 AD 帐户将不起作用。
AzureActive Directory 密码验证- Azure AD 与普通 AD 不同。它有自己的 AD 用户(与本地 AD 上的用户不同)。微软正在将“Azure AD”重命名为“Azure Entra”,因为人们认为它与本地 AD 相同,这会引起很多混淆,但事实并非如此。
其他方法也是如此,我认为它们都以 Azure 为先(这是我刚刚在网上读到的)
答案2
如果您选择 Windows 身份验证(登录 Windows 时基本上是自动的),那么登录后,Active Directory 中的计算机和 Active Directory 中的用户帐户之间就会存在信任关系。
我认为您在使用用户帐户登录时使用其他 Windows 凭据不会成功,至少在 MS 产品中不会成功。您会发现,在授权其他用户查看您的报告时,Edge、IE 和其他 MS 产品会自动“知道”登录的用户,这些信息决定了他们可以访问哪些资产,以及他们对这些资产拥有哪些权限。
要通过 Visual Studio 访问 SSRS(报告服务),您可以使用 domain\reportacct 帐户登录到您的计算机,或者在 SQL Server Management Studio 中的“安全性”下设置具有足够权限的新登录,然后将 Visual Studio 切换到 SQL Server 身份验证并使用您创建的登录。