如何解决错误 15401
当 Microsoft Windows NT 用户或 Microsoft Windows NT 组为登录名添加到 Microsoft SQL Server,或者当从一个域中服务器的登录名移动到另一个域中的服务器时,您可能会看到以下错误:
错误 15401: Windows NT 用户或组 %s 找不到。再次检查该名称。
该登录名不存在
- 验证在域中仍然存在 Windows 登录名。您的网络管理员可能已删除 Windows 登录,为特定的原因,您可能无法向该 SQL Server 授予该登录访问权。
- 验证您正确拼写域和登录名和您正在使用以下格式:
Domain\User
- 如果存在该登录名,并正确,并且您仍然收到错误,继续以下各节中,在这篇文章中。
重复的安全标识符
在 Windows 域中唯一的安全标识符 (sid) 会自动分配到域中的 Windows 登录名。为 SQL Server 登录名中添加 Windows 登录时系统表中 SQL Server 存储 SID。如果试图添加一个新的登录具有相同的 SID 为一个现有的 SQL Server 登录 15401 错误发生。注意SQL Server 2005 中不允许重复的 sid。
- 若要确定这是您的错误的原因,母版对运行下面的代码数据库而您登录到 SQL Serversysadmin 角色的成员身份:
SELECT name FROM syslogins WHERE sid = SUSER_SID ('YourDomain\YourLogin')
- 如果从该查询返回一行,重复 SID 是问题的您的原因。
- 此方案的一个可能的原因从另一个域中服务器加载 master 数据库。可能存在的那个域中登录一个 SID 与您试图在此域中添加该登录一样。这还可能在其中有克隆或映像系统的环境中发生。
- 您必须使用 sp_revokelogin 除去该登录名与匹配的 SID 或者,保留在现有登录名正确映射从旧的域登录名,要在新域中的登录名。有关如何执行此操作的详细信息单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
314546 如何在运行 SQL Server 的计算机之间移动数据库
身份验证失败
当由于某种原因 (相同或不同的域) 登录的所在的域的域控制器不可用时,您可能会收到错误 15401。- 如果登录名是在比该 SQL Server 不同的域中,验证在域之间存在正确的信任关系。
- 验证登录的域控制器是可访问,通过从计算机正在运行 SQL Server ping 命令。请检查 IP 地址和域控制器的名称。
有关 ping 命令的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:102908 如何解决与 Windows 2000 或 Windows NT 的 TCP/IP 连接问题
区分大小写
您可能遇到以下 Microsoft 知识库文章所述的区分大小写问题:245768 区分大小写 Unicode 排序顺序和 Windows NT 登录
在此例使用 sp_configure 或 sp_helpsort 存储以确定如果排序顺序或 SQL Server 实例的排序规则是大小写敏感的过程。区分大小写服务器是否按照中被引用的文章 (Q245768) 已成功添加登录步骤进行操作。
本地帐户
本地 (非域) 帐户需要进行特殊处理。如果您正试图添加本地帐户从本地计算机运行 SQL Server,查看下面的 Microsoft 知识库文章,获取正确的步骤:322988 在 Microsoft Windows NT 4.0 的 sp_grantlogin"NT AUTHORITY\SYSTEM"失败
- 为在 Windows NT 4.0 SQL Server 登录名中添加本地系统帐户查看 Q322988 Microsoft 知识库文章中的过程。
- 当您将添加预定义的本地组时,则必须使用内建作为域。
有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:216808 使用 BUILTIN\Group 到预定义的 Windows NT 组授予访问权限
名称解析
如果添加登录或组所涉及的计算机的名称解析问题,您可能会收到错误 15401。验证您的名称解析机制 (如 WINS、 DNS、 HOSTS 或 LMHOSTS) 配置是否正确。