SQL рд╕рд░реНрд╡рд░ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛

рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдРрд╕рд╛ рдХрд╛рдо рдерд╛ - рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рд░реНрд╡рд░ рдХреЛ рд▓реЛрд╣реЗ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ред рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╣рд┐рдЪрдХрд┐рдЪрд╛рд╣рдЯ рдХреЗ, рдореИрдВ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рдПрдХ рдФрд░ рдЯреБрдХрдбрд╝реЗ рдкрд░ SQL Server 2005 рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдмреИрдХрдЕрдк рд╕реЗ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдпрд╣рд╛рдБ рдирд╣реАрдВ рдерд╛ ...



рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рд╕рд╣реА рдирд┐рдХрд▓рд╛, SQL рд╕рд░реНрд╡рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирдП рд╕рд░реНрд╡рд░ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдЬреЛ рдХрд╛рдлреА рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдЦрд╛рддреЗ рдкреБрд░рд╛рдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдмрдиреЗ рд░рд╣реЗред



рдХреНрдпрд╛ рдХрд░реЗрдВ? рджрд░рдЕрд╕рд▓, SQL Server 2005 рдореЗрдВ рдЦрд╛рддреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рд▓реЛрд╣реЗ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдкреНрд░рд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореБрдЭреЗ Microsoft рдХрд╛ рдПрдХ рд▓реЗрдЦ рдЖрдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╡рд░реНрдгрди рд╣реИ ...





рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛: рдЗрд╕рдореЗрдВ рд╕рд░реНрд╡рд░ рдП рд╣реИ - рдЗрд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд▓реЙрдЧрд┐рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рд╕рд░реНрд╡рд░ рдмреА рд╣реИ - рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ (рд▓реЙрдЧрд┐рди) рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред



рдХрд╛рд░реНрд░рд╡рд╛рдИ:



1. SQL рд╕рд░реНрд╡рд░ рдкреНрд░рдмрдВрдзрди рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рд░реНрд╡рд░ A рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ



2. рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:



рдЙрдкрдпреЛрдЧ рдорд╛рд╕реНрдЯрд░

GO

рдпрджрд┐ OBJECT_ID ('sp_hexadecimal') рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ

DROP рдкреНрд░рдХреНрд░рд┐рдпрд╛ sp_hexadecimal

GO

рдмрдирд╛рдПрдБ рдкреНрд░рдХреНрд░рд┐рдпрд╛ sp_hexadecimal

@binvalue рд╡рд░реНрдмрд┐рдирд░реА (256),

@hexvalue varchar (514) OUTPUT

рдХреЗ рд░реВрдк рдореЗрдВ

DECLARE @charvalue varchar (514)

DECLARE @i int

DECLARE рд▓рдВрдмрд╛рдИ int

DECLARE @hexstring рдЪрд╛рд░ (16)

рдЪрдпрди рдХрд░реЗрдВ @charvalue = '0x'

@I = 1 рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ

рдЪрдпрдирд┐рдд рд▓рдВрдмрд╛рдИ = DATALENGTH (@binvalue)

рдЪрдпрди рдХрд░реЗрдВ @hexstring = '0123456789ABCDEF'

WHILE (@i <= рд▓рдВрдмрд╛рдИ )

рд╢реБрд░реВ

DECLARE @tempint int

DECLARE @firstint int

DECLARE @secondint int

рд╕реЗрд▓реЗрдХреНрдЯ @tempint = CONVERT (int, SUBSTRING (@binvalue, @ i, 1))

рдЪрдпрди рдХрд░реЗрдВ @firstint = FLOOR (@ рдЕрд╕реНрдерд╛рдпреА / 16)

SELECT @secondint = @tempint - (@ firstint * 16)

@Charvalue = @charvalue + рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ

SUBSTRING (@hexstring, @ firstint + 1, 1) +

SUBSTRING (@hexstring, @ secondint + 1, 1)

@I = @i + 1 рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ

рдЕрдВрдд



@Hexvalue = @charvalue рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ

GO

рдпрджрд┐ OBJECT_ID ('sp_help_revlogin') рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ

DROP рдкреНрд░рдХреНрд░рд┐рдпрд╛ sp_help_revlogin

GO

рд░рдЪрдирд╛рддреНрдордХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ sp_help_revlogin @login_name sysname = NULL AS

DECLARE рдирд╛рдо sysname

рдбреЗрдХреНрд▓реЗрдпрд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрд░рдЪрд░ (1)

DECLARE @hasaccess int

DECLARE @denylogin int

DECLARE @is_disabled int

DECLARE @PWD_varbinary varbinary (256)

DECLARE @PWD_string varchar (514)

DECLARE @SID_varbinary рд╕рдВрд╕реНрдХрд░рдг (85)

DECLARE @SID_string varchar (514)

DECLARE @tmpstr varchar (1024)

DECLARE @is_policy_checked varchar (3)

DECLARE @is_expiration_checked varchar (3)



DECLARE @defaultdb sysname

IF (@login_name IS NULL)

DECLARE login_curs CURSOR рдХреЗ рд▓рд┐рдП



P.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ

sys.server_principals p LEFT JOIN sys.syslogins l

ON (l.name = p.name) WHERE p.type IN ('S', 'G', 'U') рдФрд░ p.name <> 'sa'

рд╡рд░рдирд╛

DECLARE login_curs CURSOR рдХреЗ рд▓рд┐рдП



P.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ

sys.server_principals p LEFT JOIN sys.syslogins l

ON (l.name = p.name) рдЬрд╣рд╛рдБ p.type IN ('S', 'G', 'U') рдФрд░ p.name = @login_name

OPEN login_curs



FETCH NEXT FROM login_curs INTO @SID_varbinary, рдирд╛рдо , рдкреНрд░рдХрд╛рд░ , @is_disabled, @defaultdb, @hasaccess, @denylogin

IF (@@ fetch_status = -1)

рд╢реБрд░реВ

рдкреНрд░рд┐рдВрдЯ 'рдХреЛрдИ рдирд╛рдо рдирд╣реАрдВ рдорд┐рд▓рд╛ред'

CLOSE login_curs

рд▓реЙрдЧрд┐рди_рдХреЛрд░реНрд╕ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВ

рд╡рд╛рдкрд╕реА -1

рдЕрдВрдд

SET @tmpstr = '/ * sp_help_revlogin рд╕реНрдХреНрд░рд┐рдкреНрдЯ'

рдкреНрд░рд┐рдВрдЯ @tmpstr

SET @tmpstr = '** рдЬрдирд░реЗрдЯ' + CONVERT (varchar, GETDATE ()) + 'рдкрд░' + @@ SERVERNAME + '* /'

рдкреНрд░рд┐рдВрдЯ @tmpstr

рдкреНрд░рд┐рдВрдЯ ''

WHILE (@@ fetch_status <> -1)

рд╢реБрд░реВ

IF (@@ fetch_status <> -2)

рд╢реБрд░реВ

рдкреНрд░рд┐рдВрдЯ ''

SET @tmpstr = '- рд▓реЙрдЧрд┐рди:' + рдирд╛рдо

рдкреНрд░рд┐рдВрдЯ @tmpstr

IF ( рдЯрд╛рдЗрдк рдХрд░реЗрдВ IN ('G', 'U'))

BEGIN - NT рдкреНрд░рдорд╛рдгрд┐рдд рдЦрд╛рддрд╛ / рд╕рдореВрд╣



SET @tmpstr = 'CREATE LOGIN' + QUOTENAME ( рдирд╛рдо ) + 'WINDOWS рд╡рд┐рде DEFAULT_DATABASE = [' + @defaultdb + ']' '

рдЕрдВрдд

ELSE BEGIN - SQL рд╕рд░реНрд╡рд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг

- рдкрд╛рд╕рд╡рд░реНрдб рдФрд░ рд╕рд╛рдЗрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

SET @PWD_varbinary = CAST (LOGINPROPERTY ( рдирд╛рдо , 'рдкрд╛рд╕рд╡рд░реНрдбрд╣реИрд╢') AS varbinary (256))

EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT

EXEC sp_hexadecimal @SID_varbinary, @SID_string OUT

- рдкрд╛рд╕рд╡рд░реНрдб рдкреЙрд▓рд┐рд╕реА рд░рд╛рдЬреНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ @is_policy_checked = CASE is_policy_checked рдЬрдм 1 'рдкрд░' рд╣реИ, рддреЛ 'рдмрдВрдж' ELSE NULL END FROM sys.sql_logins рд╕реЗ рдХрд╣рд╛рдБ = рдирд╛рдо

рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ @is_expiration_checked = CASE is_expiration_checked рдЬрдм 1 'рдкрд░' рддрдм рд╣реЛ, рдЬрдм 'рдмрдВрдж' ELSE NULL END FROM sys.sql_logins рдкрд░ рдЬрд╛рдПрдВ = рдирд╛рдо

SET @tmpstr = 'CREATE LOGIN' + QUOTENAME ( рдирд╛рдо ) + 'PASSWORD рдХреЗ рд╕рд╛рде =' + @ PWD_string + 'HASHED, SID =' + @SID_string + ', DEFAULT_DATABASE = [' + @defaultdb + ']]



IF (@is_policy_checked IS NULL рдирд╣реАрдВ рд╣реИ)

рд╢реБрд░реВ

SET @tmpstr = @tmpstr + ', CHECK_POLICY =' + @is_policy_hecked

рдЕрдВрдд

рдпрджрд┐ (@is_expiration_checked рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ)

рд╢реБрд░реВ

SET @tmpstr = @tmpstr + ', CHECK_EXPIRATION =' + @is_expiration_hecked

рдЕрдВрдд

рдЕрдВрдд

IF (@denylogin = 1)

BEGIN - рд▓реЙрдЧрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╡рдВрдЪрд┐рдд рд╣реИ

SET @tmpstr = @tmpstr + '; DENN рдХрдиреЗрдХреНрдЯ SQL рдХреЛ '+ QUOTENAME ( рдирд╛рдо )

рдЕрдВрдд

ELSE IF (@hasaccess = 0)

BEGIN - рд▓реЙрдЧрд┐рди рдореМрдЬреВрдж рд╣реИ рд▓реЗрдХрд┐рди рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ

SET @tmpstr = @tmpstr + '; REVOKE рдХрдиреЗрдХреНрдЯ SQL рдХреЛ '+ QUOTENAME ( рдирд╛рдо )

рдЕрдВрдд

IF (@is_disabled = 1)

BEGIN - рд▓реЙрдЧрд┐рди рдЕрдХреНрд╖рдо рд╣реИ

SET @tmpstr = @tmpstr + '; ALTER LOGIN '+ QUOTENAME ( рдирд╛рдо ) +' DISABLE '

рдЕрдВрдд

рдкреНрд░рд┐рдВрдЯ @tmpstr

рдЕрдВрдд



FETCH NEXT FROM login_curs INTO @SID_varbinary, рдирд╛рдо , рдкреНрд░рдХрд╛рд░ , @is_disabled, @defaultdb, @hasaccess, @denylogin

рдЕрдВрдд

CLOSE login_curs

рд▓реЙрдЧрд┐рди_рдХреЛрд░реНрд╕ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░реЗрдВ

рд╡рд╛рдкрд╕реА реж

GO



3. рд╕реНрдХреНрд░рд┐рдкреНрдЯ 2 рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреА рд╣реИред рд╣рдореЗрдВ sp_help_revlogin рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рд╕рд░реНрд╡рд░ A рдкрд░ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ:



EXEC sp_help_revlogin



4. рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣рдореЗрдВ рд▓реЙрдЧрд┐рди рдХреЛ рджреВрд╕рд░реЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдЧреАред рдЬреИрд╕реЗ рддрд╛рд░ рд╕реЗ



рдХреНрд░рд┐рдПрдЯрд┐рд╡ рд▓реЙрдЧ [рд▓реЙрдЧрд┐рди] PASSWORD рдХреЗ рд╕рд╛рде = 0x0100F43F09430FB0C4B5F613D2042E0FF0189E7894ADC460FB рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, SID = 0x9EC29C663D6533AF53B4F8B88484848484, DEFA



рдЕрдкрдиреА рдЬрд░реВрд░рдд рдХрд╛ рд╕рд╛рдорд╛рди рдЪреБрдиреЗрдВред рдФрд░ рд╕рд░реНрд╡рд░ рдмреА рдкрд░ рдЗрди рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред



5. рд╡реЛрдЗрд▓рд╛! рдЖрдирдиреНрджред =)



рдореВрд▓ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдпрд╣рд╛рдБ ред



All Articles