18456: Login failed for user(用户登录失败)
SQL Server含义
登录尝试在认证阶段被拒绝。可能是用户名/密码错误、账户被禁用,或用户无权访问该数据库。
原因
密码错误、登录名不存在、账户被禁用/锁定、在仅启用 Windows 身份验证时使用 SQL 登录,或无权访问默认数据库。错误文本中的 State 代码指出真正原因(State 5:登录名不存在;State 7:登录名已禁用且密码也错误;State 8:密码错误(最常见);State 18:必须更改密码;State 38:无法打开指定的数据库;State 58:服务器处于仅 Windows 身份验证模式时尝试 SQL 登录)。
解决方法
根据 SQL Server 错误日志中的 State 值找出根本原因(出于安全原因,详细信息不会发送给客户端)。核实用户名/密码。检查服务器是否运行在 'SQL Server and Windows Authentication Mode'(混合模式);如果做了更改,需重启服务。核实该登录名在目标数据库中的用户映射和访问权限。
同一数据库的其他条目
- 2627Violation of PRIMARY KEY / UNIQUE KEY constraint. Cannot insert duplicate key in object(违反 PRIMARY KEY / UNIQUE KEY 约束。不能在对象中插入重复键)
- 2601Cannot insert duplicate key row in object with unique index. The duplicate key value is ...(不能在具有唯一索引的对象中插入重复键行。重复键值为 ...)
- 547The INSERT/UPDATE/DELETE statement conflicted with the FOREIGN KEY / CHECK constraint(INSERT/UPDATE/DELETE 语句与 FOREIGN KEY / CHECK 约束冲突)
- 8152String or binary data would be truncated(字符串或二进制数据将被截断)
- 2628String or binary data would be truncated in table, column ...; truncated value(表、列 ... 中的字符串或二进制数据将被截断;截断的值)
- 1222Lock request time out period exceeded(已超过锁请求超时时段)
- 9002The transaction log for database is full due to ...(数据库的事务日志已满,原因为 ...)