我有一个运行 SQL Server 2005 的独立 Windows Server 2003 和一个 Windows Server 2003 Active Directory 域控制器。使用维护计划/SQL Server 代理,我正在尝试将独立框中的数据库转储写入 DC 上的共享。我知道访问远程共享的一般规则(例如,必须使用具有适当权限的登录帐户等)。事实上,将转储写入与 DC 位于同一域中的另一台非 DC 服务器可以正常工作。
我正在尝试将 SQL Server 代理帐户的登录凭据设置为“域\用户名”(或用户名@addomainname)。如果我以“域\用户名”的形式指定用户名,我得到的错误(不管密码)是:
“帐户名无效或不存在,或指定帐户名的密码无效”。
如果我以“user@addomainname”的形式指定用户名,我得到的错误(不管密码)是:
“指定的域不存在或无法联系。”
我在 DC 上打开了登录失败审核,并且在日志中没有看到任何失败,这表明机器甚至没有尝试进行身份验证,而是在此之前失败了。
我知道非成员服务器上的用户可以对 DC 上的共享进行身份验证,因为进行交互式登录(例如“net use * \dcname\c$ /user:username@addomainname”,或使用其他形式的用户名)工作正常。
上面的示例是关于 SQL Server 的,但适用于任何 Windows 服务。
为什么服务不能使用域帐户登录,但使用同一帐户的交互式登录(驱动器映射)有效?
借助 Rackspace(托管此特定配置)的支持,我现在了解了情况。
“net use *...”驱动器映射示例和服务示例是苹果与橘子的比较。对于驱动器映射案例,它只是一个正在发生的身份验证。在服务案例中,我实际上是在尝试在域凭据下运行本地进程,根据定义,这是不可能的,因为服务器不在域中。不在域中 = 无法在域凭据下执行。驱动器映射有效,因为我没有尝试以域帐户的身份执行进程 - 我只是传递凭据。
此限制适用于任何类型的流程,无论它是交互式的还是基于服务的。
您可以使用 net use 从 SQL 服务器访问共享吗?如果是这样,我帮不了你。如果没有,这听起来像是寻找域控制器进行身份验证的 DNS 问题。从命令提示符尝试
其中 Domain_Name 是您的域的名称。这应该为您提供域中 DC 的 IP 地址,如果没有,则验证从独立计算机解析域的 SRV 记录时存在问题。