从非成员服务器以域帐户运行 Windows 服务

从非成员服务器以域帐户运行 Windows 服务

我有一个独立的 Windows Server 2003,运行 SQL Server 2005 和一个 Windows Server 2003 Active Directory 域控制器。使用维护计划/SQL Server Agent,我试图将数据库转储从独立框写入 DC 上的共享。我知道访问远程共享的一般规则(例如,必须使用具有适当权限的登录帐户等)。事实上,将转储写入与 DC 位于同一域中的另一台非 DC 服务器可以正常工作。

我正在尝试将 SQL Server 代理帐户的登录凭据设置为“域\用户名”(或用户名@addomainname)。如果我以“域\用户名”的形式指定用户名,我收到的错误(无论密码如何)是:

“帐户名无效或不存在,或者指定的帐户名的密码无效”。

如果我以“user@addomainname”的形式指定用户名,我收到的错误(无论密码是什么)是:

“指定的域不存在或无法联系。”

我已经在 DC 上启用了登录失败审核,但在日志中没有看到任何失败,这表明该机器甚至没有尝试进行身份验证,而是在此之前就失败了。

我知道非会员服务器上的用户在 DC 上对共享进行身份验证,因为执行交互的登录(例如“net use * \dcname\c$ /user:username@addomainname”,或使用用户名的其他形式)工作正常。

上面的例子是关于 SQL Server 的,但适用于任何 Windows 服务。

为什么服务无法使用域帐户登录,但使用同一帐户进行交互式登录(驱动器映射)却可以?

答案1

在 Rackspace(托管此特定配置)的支持下,我现在了解了情况。

“net use *...”驱动器映射示例和服务示例是苹果和橘子之间的比较。对于驱动器映射情况,这只是正在进行的身份验证。在服务情况下,我实际上试图在域凭据下运行本地进程,这在定义上是不可能的,因为服务器不在域中。不在域中 = 无法在域凭据下执行。驱动器映射有效,因为我没有尝试以域帐户身份执行进程 - 我只是传递凭据。

此限制适用于任何类型的流程,无论其是交互式的还是基于服务的。

答案2

您可以使用 net use 从 SQL 服务器访问共享吗?如果可以,我帮不了你。如果不行,这听起来像是 DNS 问题,无法找到要进行身份验证的域控制器。尝试从命令提示符中

nslookup
set type=all
_ldap._tcp.dc._msdcs.Domain_Name
其中 Domain_Name 是您的域名。这应该会为您提供域中 DC 的 IP 地址,如果没有,则表明从独立计算机解析域的 SRV 记录存在问题。

相关内容