Хранимая процедура SQL Server, позволяющая генерировать уникальные пароли. Процедура принимает два параметра. Первый указывает максимальный размер генерируемого пароля (по умолчанию -
. Второй - тип пароля, который может быть простым (simple) - состоящим из маленьких букв, либо сложным (complex) - состоящим из всем доступных символов.
Инструкции
Использовать, например так:
-- простой пароль из 4 символов
exec random_password 4
-- сложный пароль из 12 символов
exec random_password 12, 'complex'
CREATE PROC random_password
(
@len int = 8, --длина пароля
@password_type char(7) = 'simple' -- simple - простой пароль, complex - сложный пароль
)
AS
BEGIN
DECLARE @password varchar(25), @type tinyint, @bitmap char(6)
SET @password=''
SET @bitmap = 'uaeioy'
WHILE @len > 0
BEGIN
IF @password_type = 'simple' --простой пароль
BEGIN
IF (@len%2) = 0
SET @password = @password + SUBSTRING(@bitmap,CONVERT(int,ROUND(1 + (RAND() * (5)),0)),1)
ELSE
SET @password = @password + CHAR(ROUND(97 + (RAND() * (25)),0))
END
ELSE --сложный пароль
BEGIN
SET @type = ROUND(1 + (RAND() * (3)),0)
IF @type = 1
SET @password = @password + CHAR(ROUND(97 + (RAND() * (25)),0))
ELSE IF @type = 2
SET @password = @password + CHAR(ROUND(65 + (RAND() * (25)),0))
ELSE IF @type = 3
SET @password = @password + CHAR(ROUND(48 + (RAND() * (9)),0))
ELSE IF @type = 4
SET @password = @password + CHAR(ROUND(33 + (RAND() * (13)),0))
END
SET @len = @len - 1
END
SELECT @password --выводим результат
END