默认情况下关闭CHECK_POLICY


8

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

CHECK_POLICY = OFF;

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

ALTER LOGIN username WITH CHECK_POLICY = OFF;

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

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


2
为什么要从一个古老的版本升级到另一个古老的版本?自您的“新”版本以来,我们有3个新版本。
玛丽安

2
我认为该问题的答案是因为软件供应商最多仅支持SQL2005。这很常见。
mrdenny

致rddenny:软件供应商不认为这是一个问题。
阿蒂

Answers:


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

SQL 2005中是否提供DDL触发器?
mrdenny


凉。自从我不得不对SQL 2005做任何令人兴奋的事情已经过去了一段时间。我一辈子都记不起来了。他们也会是我的建议。
mrdenny13年

我在文档的任何地方都找不到任何默认不关闭的CHECK_POLICY的内容。但似乎是这样。
阿蒂

@Arty:我也四处张望。包括各种MS SQL Server博客。从我阅读的内容来看,无法进行全局设置。
gbn

0

如果您使用MUST_CHANGE创建了登录名,并且用户未更改默认密码,则这些方法将无效。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.