默认关闭 CHECK_POLICY

Art*_*rty 8 sql-server-2005 sql-server

我们从 SQL Server 2000 迁移到 SQL Server 2005。我无法更改的客户端软件创建了一个没有选项的用户

CHECK_POLICY = OFF;
Run Code Online (Sandbox Code Playgroud)

创建用户后,我必须运行命令

ALTER LOGIN username WITH CHECK_POLICY = OFF;
Run Code Online (Sandbox Code Playgroud)

按照建议禁用该策略,我不能。

是否可以禁用CHECK_POLICY没有她的CREATE LOGIN用户创建的默认值CHECK_POLICY = OFF

gbn*_*gbn 6

您可以使用 DDL 触发器捕获 DDL 事件 CREATE LOGIN

CREATE TRIGGER PolicyStuff
ON ALL SERVER
FOR CREATE_LOGIN
AS
SET NOCOUNT ON;
IF EVENTDATA().value('(/EVENT_INSTANCE/LoginType)[1]','nvarchar(100)') = 'SQL Login'
BEGIN
    DECLARE @sql nvarchar(1000) = 'ALTER LOGIN ' + QUOTENAME(EVENTDATA().value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(max)')) + ' WITH CHECK_POLICY = OFF;';
    EXEC(@sql);
END
GO

CREATE LOGIN foo WITH PASSWORD='C-mplex654Password', CHECK_POLICY=ON;
GO
SELECT SL.name, SL.is_policy_checked FROM sys.sql_logins SL WHERE SL.name = 'foo'
GO
DROP LOGIN foo
GO
Run Code Online (Sandbox Code Playgroud)