• Here is some code for generating a nice 128 character SA password; have fun:

    set

    nocount on

    declare

    @counter int,

    @password varchar

    (128),

    @char

    char(1),

    @charindex

    int,

    @loop

    int

    /* Unallowed characters:

    ! = 33

    ( = 40

    ) = 41

    , = 40

    * = 42

    ; = 59

    ? = 63

    @ = 64

    [ = 91

    ] = 93

    { = 123

    } = 125

    */

    select

    @counter = 1, @password = ''

    while

    @counter < 2

    begin

    --Restrict the password to 0-9, A-Z, and a-z

    select @loop = 1

    while @loop = 1

    begin

    select @charindex = convert(int, rand() * 254)

    if (@charindex between 65 and 90 or @charindex between 97 and 122)

    and @charindex not in (33,40,41,42,59,63,64,91,93,123,125,130,132,133,134,135,136,137,139,161,162,166,167,168,169,171,172,173,174,175,176,177,180,182,184,187,188,189,190,191,215,247)

    --or @charindex between 161 and 255 or @charindex between 130 AND 140

    select @loop = 0

    end

    --Accumulate characters for password string

    select @char = char(@charindex)

    select @password = @password + @char

    select @counter = @counter + 1

    end

    while

    @counter < 4

    begin

    --Restrict the password to 0-9, A-Z, and a-z

    select @loop = 1

    while @loop = 1

    begin

    select @charindex = convert(int, rand() * 254)

    if (@charindex between 48 and 57 or @charindex between 65 and 90 or @charindex between 97 and 122)

    and @charindex not in (33,40,41,42,59,63,64,91,93,123,125,130,132,133,134,135,136,137,139,161,162,166,167,168,169,171,172,173,174,175,176,177,180,182,184,187,188,189,190,191,215,247)

    --or @charindex between 161 and 255 or @charindex between 130 AND 140

    select @loop = 0

    end

    --Accumulate characters for password string

    select @char = char(@charindex)

    select @password = @password + @char

    select @counter = @counter + 1

    end

    while

    @counter < 5

    begin

    --Restrict the password to 0-9

    select @loop = 1

    while @loop = 1

    begin

    select @charindex = convert(int, rand() * 254)

    if @charindex between 48 and 57 --or @charindex between 65 and 90 or @charindex between 97 and 122

    and @charindex not in (33,40,41,42,59,63,64,91,93,123,125,130,132,133,134,135,136,137,139,161,162,166,167,168,169,171,172,173,174,175,176,177,180,182,184,187,188,189,190,191,215,247)

    --or @charindex between 161 and 255 or @charindex between 130 AND 140

    select @loop = 0

    end

    --Accumulate characters for password string

    select @char = char(@charindex)

    select @password = @password + @char

    select @counter = @counter + 1

    end

    while

    @counter < 10

    begin

    -- Restrict the password to NOT 0-9, A-Z, and a-z

    select @loop = 1

    while @loop = 1

    begin

    select @charindex = convert(int, rand() * 254)

    if --@charindex between 48 and 57 or @charindex between 65 and 90 or @charindex between 97 and 122

    --or

    (@charindex between 161 and 255 or @charindex between 130 AND 140)

    and @charindex not in (33,40,41,42,59,63,64,91,93,123,125,130,132,133,134,135,136,137,139,161,162,166,167,168,169,171,172,173,174,175,176,177,180,182,184,187,188,189,190,191,215,247)

    select @loop = 0

    end

    --Accumulate characters for password string

    select @char = char(@charindex)

    select @password = @password + @char

    select @counter = @counter + 1

    end

    while

    @counter < 11

    begin

    --Restrict the password to 0-9

    select @loop = 1

    while @loop = 1

    begin

    select @charindex = convert(int, rand() * 254)

    if @charindex between 48 and 57 --or @charindex between 65 and 90 or @charindex between 97 and 122

    and @charindex not in (33,40,41,42,59,63,64,91,93,123,125,130,132,133,134,135,136,137,139,161,162,166,167,168,169,171,172,173,174,175,176,177,180,182,184,187,188,189,190,191,215,247)

    --or @charindex between 161 and 255 or @charindex between 130 AND 140

    select @loop = 0

    end

    --Accumulate characters for password string

    select @char = char(@charindex)

    select @password = @password + @char

    select @counter = @counter + 1

    end

    -- while @counter < 64 -- use this for app role passwords

    while

    @counter < 129 -- use this for regular passwords

    begin

    --Restrict the password to 0-9, A-Z, and a-z

    select @loop = 1

    while @loop = 1

    begin

    select @charindex = convert(int, rand() * 254)

    if (@charindex between 48 and 57 or @charindex between 65 and 90 or @charindex between 97 and 122 or @charindex between 161 and 255 or @charindex between 130 AND 140)

    and @charindex not in (33,40,41,42,59,63,64,91,93,123,125,130,132,133,134,135,136,137,139,161,162,166,167,168,169,171,172,173,174,175,176,177,180,182,184,187,188,189,190,191,215,247)

    select @loop = 0

    end

    --Accumulate characters for password string

    select @char = char(@charindex)

    select @password = @password + @char

    select @counter = @counter + 1

    end

    select

    RTRIM(@password) AS Password