Login’leri Hash Password’leri ile Birlikte Oluşturmak

Published on 09 December 2013 by in Genel T-SQL / Okunma: 1,978

0

Production database’imizin bir clone’unu oluşturmak istediğimizde, login’lerin birebir password’leri ile birlikte yaratmamız gerekir. Bunun için aşağıdaki script ile loginlerin hash password’leri ile birlikte create script’ini almamız mümkün.

SELECT 'create login ['+p.name+'] '+
       CASE 
            WHEN p.type IN ('U' ,'G') THEN 'from windows '
            ELSE ''
       END+
       'with '+
       CASE 
            WHEN p.type='S' THEN 'password = '+MASTER.sys.fn_varbintohexstr(l.password_hash) 
                +' hashed, '+
                 'sid = '+MASTER.sys.fn_varbintohexstr(l.sid)+
                 ', check_expiration = '+
                 CASE 
                      WHEN l.is_policy_checked>0 THEN 'ON, '
                      ELSE 'OFF, '
                 END+'check_policy = '+CASE 
                                            WHEN l.is_expiration_checked>0 THEN 
                                                 'ON, '
                                            ELSE 'OFF, '
                                       END+
                 CASE 
                      WHEN l.credential_id>0 THEN 'credential = '+c.name+', '
                      ELSE ''
                 END
            ELSE ''
       END+
       'default_database = '+p.default_database_name+
       CASE 
            WHEN LEN(p.default_language_name)>0 THEN ', default_language = '+p.default_language_name
            ELSE ''
       END
FROM   sys.server_principals p
       LEFT JOIN sys.sql_logins l
            ON  p.principal_id = l.principal_id
       LEFT JOIN sys.credentials c
            ON  l.credential_id = c.credential_id
WHERE  p.type IN ('S' ,'U' ,'G')
       AND p.name<>'sa'

 

Leave a Reply