原作者: 三笠
在维护 SQL Server 数据库时,账号密码策略问题是一个常见的困扰。今天在 SQL Server 2008 上创建新账号时遇到了一个典型的错误:
消息 15118,级别 16,状态 1,第 1 行
密码有效性验证失败。该密码不够复杂,不符合 Windows 策略要求。
本文将详细介绍该问题的排查过程和解决方案。
SQL Server 的密码策略并非独立存在,而是依赖于 Windows 操作系统的本地安全策略。当创建账号时出现密码复杂度错误,需要检查系统级别的安全设置。
打开本地安全策略管理器:服务器管理器 → 本地服务器 → 工具 → 本地安全策略
导航至密码策略:安全设置 → 账户策略 → 密码策略
检查"密码必须符合复杂性要求"选项的状态:
密码复杂性要求策略如下:
如果启用此策略,密码必须符合下列最低要求:
在更改或创建密码时执行复杂性要求。
问题原因:密码中包含了账号名称,违反了复杂性要求。
修改密码后重新执行创建脚本:
SELECT @@VERSION;
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
-- 创建登录账号并指定默认数据库
CREATE LOGIN LUCIFER WITH PASSWORD = 'MSSQLTEST@2025!', DEFAULT_DATABASE = WANGDS;
-- 切换到目标数据库
USE WANGDS;
GO
-- 创建数据库用户并关联登录账号
CREATE USER LUCIFER FOR LOGIN LUCIFER;
GO
-- 设置默认 Schema
USE WANGDS;
ALTER USER LUCIFER WITH DEFAULT_SCHEMA = dbo;
GO
-- 授予表级别的增删改查权限
GRANT SELECT, INSERT, UPDATE, DELETE ON WANGDS.dbo.zhangsan TO LUCIFER;
GRANT SELECT, INSERT, UPDATE, DELETE ON WANGDS.dbo.lissi TO LUCIFER;
GO
执行成功,账号创建完成,可以对表进行增删改查操作。
SQL Server 数据库的密码策略继承自 Windows 操作系统的安全策略,而非独立配置。遇到密码复杂度问题时,应当:
理解这一机制有助于快速定位和解决类似问题。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。