我花了几天的时间来解决以下问题。
我想让作为 AD 成员的人员在 SQL Management Studio 17.x 上使用他们的用户名/密码进行身份验证,但我无法使用 Windows 身份验证,因为他们正在使用的计算机未加入域。
有一个“Active Directory - 密码”选项。我遇到的问题是我的证书不受信任。这个问题已经解决,但现在我收到消息;或:未找到目标主体名称/不正确或:用户登录失败。
我的 SQL 服务器配置为混合模式。
希望有人可以帮助我,因为现在我的远程用户无法使用他们自己的 AD 凭据登录 SQL。
顺便说一句,我确实看到很多使用批处理文件来启动它的解决方案,但我希望还有其他方法,因为在这种情况下,凭据在该工作站上仍然是纯文本。
祝好,戴夫
答案1
您不需要将所有机器放在同一个域中才能使 Windows 身份验证正常工作。
进入 Windows 凭据存储区。在 Windows 10 上,位于控制面板、用户帐户、管理凭据下。
添加一个新的 Windows 凭据,其中网络地址为 hostname:1433(或您使用的任何端口),用户名是完全指定的 DOMAIN\Username,并使用适当的密码。
然后尝试以 Windows 身份验证模式连接到 MSSQL,它应该使用您刚刚创建的凭据工作。
答案2
为了澄清起见,对这个问题进行了更新。您可以使用以下方式对 SQL 服务器进行身份验证SSMS 17如果该 SQL 服务器是Azure SQL 服务器,并且 Azure SQL 服务器已加入Azure AD。“Active Directory - 密码”选项用于连接到Azure SQL 服务器仅限此时。
答案3
如果客户端系统未连接到域,则您无法连接到服务器并使用 Windows 凭据进行身份验证。
SQL Server 中的“Windows 身份验证”实际上意味着“通过域信任支持的身份验证”。这意味着您只能登录已经通过身份验证并登录的 Windows 帐户。
打开 SQL Server Management Studio 时,您可以看到这一点。有一个下拉菜单,可让您选择 SQL 身份验证(需要用户名和密码)或 Windows 身份验证(不允许您输入其他用户名或密码)。为了使用不同的 Windows 凭据登录 SSMS,您必须使用 Windows 的“以...身份运行”功能以不同的 Windows 用户身份运行 SSMS 应用程序本身。
您在这里无法做到这一点,因为您无法在域外的计算机上使用域帐户以 Windows 用户身份进行身份验证。这些工作站和域之间没有信任,因此您将无法建立执行受信任身份验证所需的会话。
您可以尝试runas.exe
切换/netonly
,但我无法确认这是否有效:
runas /netonly /user:domain\username ssms.exe