1
可以使用osql.exe或sqlcmd.exe更改實例的密碼策略嗎?我有一個創建數據庫和用戶的批處理腳本,但正如您所知,「sp_addlogin」存儲過程在創建用戶時似乎沒有允許少於8個字符密碼的選項。 如何在使用「sp_addlogin」創建登錄之前使用調用osql的批處理腳本降低此策略要求?可以使用osql.exe或sqlcmd.exe來更改實例的默認密碼策略嗎?
這裏是我如何做到這一點至今:
-- CREATE USER 2005/2008 sql generated from batch file
-- where username and db name are the same
IF NOT EXISTS (SELECT * FROM master.dbo.syslogins WHERE loginname = N'teee')
BEGIN
declare @loginlang nvarchar(132)
SELECT @loginlang = N'us_english'
IF @loginlang IS NULL OR (NOT EXISTS (SELECT * FROM master.dbo.syslanguages WHERE name = @loginlang) and @loginlang != N'us_english')
SELECT @loginlang = @@language
EXEC sp_addlogin N'teee', N'PassMe', N'TEEE', @loginlang
ALTER LOGIN teee WITH PASSWORD = 'PassMe' UNLOCK, CHECK_POLICY = OFF, CHECK_EXPIRATION = OFF
END
GO
IF NOT EXISTS (SELECT * FROM dbo.sysusers WHERE name = N'teee' and status != 0)
EXEC sp_grantdbaccess N'teee', N'teee'
GO
EXEC sp_addrolemember N'db_datareader', N'teee'
GO
EXEC sp_addrolemember N'db_datawriter', N'teee'
GO
EXEC sp_addrolemember N'db_owner', N'teee'
GO
我得到的錯誤,當我運行是這樣的:
Msg 15116, Level 16, State 1, Server U0163499, Line 1
Password validation failed. The password does not meet Windows policy requirements because it is too short.
Msg 15151, Level 16, State 1, Server U0163499, Line 10
Cannot alter the login 'teee', because it does not exist or you do not have permission.
顯然,如果我使用密碼大於或等於8個字符創建用戶時,它工作正常。我需要一個解決方案,也適用於SQL 2012
我不相信該解決方案也將在SQL 2012上工作。我不相信「CREATE USER」在SQL2012上工作了,這就是爲什麼我被迫使用存儲過程版本(因爲它的工作原理2008年和2012年)。我錯了嗎? – djangofan
我使用SSMS在MSSQL 2012框上測試'tsql'。 Osql.exe在2012年不起作用,但sqlcmd可以正常工作。你用SSMS在你的盒子上試過了嗎?如果你那麼錯誤是什麼? – Hiten004
你是對的。它確實有效。我只需要測試這個場景。非常感謝。 – djangofan