|
| 1 | +DECLARE |
| 2 | + @is_disabled as tinyint = <%= if $disabled {1} else {0} %>, |
| 3 | + @login_type as varchar(255) = NULL; |
| 4 | + |
| 5 | +SET @login_type = (SELECT [type] FROM sys.server_principals where name = '<%= $login %>') |
| 6 | +IF (@login_type IS NULL) |
| 7 | +BEGIN |
| 8 | + -- Create the login |
| 9 | + CREATE LOGIN [<%= $login %>] |
| 10 | + <% if $login_type !~ /WINDOWS_LOGIN/ { -%> |
| 11 | + WITH |
| 12 | + PASSWORD = '<%= $password %>', |
| 13 | + CHECK_EXPIRATION = <% if $check_expiration { %>ON<% } else { %>OFF<% } %>, |
| 14 | + CHECK_POLICY = <% if $check_policy { %>ON<% } else { %>OFF<% } %>, |
| 15 | + <% } else { -%> |
| 16 | + FROM WINDOWS WITH |
| 17 | + <% } -%> |
| 18 | + DEFAULT_LANGUAGE = [<%= $default_language %>], |
| 19 | + DEFAULT_DATABASE = [<%= $default_database %>]; |
| 20 | + -- Fetch the login type |
| 21 | + SET @login_type = (SELECT [type] FROM sys.server_principals where name = '<%= $login %>') |
| 22 | +END |
| 23 | + |
| 24 | +IF (@login_type = 'G') |
| 25 | +BEGIN |
| 26 | + -- Windows Group type logins can only be granted/denied connection |
| 27 | + IF @is_disabled = 0 GRANT CONNECT SQL TO [<%= $login %>] |
| 28 | + ELSE DENY CONNECT SQL TO [<%= $login %>] |
| 29 | +END |
| 30 | +ELSE |
| 31 | +BEGIN |
| 32 | + IF @is_disabled = 0 ALTER LOGIN [<%= $login %>] ENABLE |
| 33 | + ELSE ALTER LOGIN [<%= $login %>] DISABLE |
| 34 | +END |
| 35 | + |
| 36 | +ALTER LOGIN [<%= $login %>] WITH |
| 37 | +<% if $login_type != 'WINDOWS_LOGIN' { -%> |
| 38 | + CHECK_EXPIRATION = <% if $check_expiration { %>ON<% } else { %>OFF<% } %>, |
| 39 | + CHECK_POLICY = <% if $check_policy { %>ON<% } else { %>OFF<% } %>, |
| 40 | +<% } -%> |
| 41 | + DEFAULT_LANGUAGE = [<%= $default_language %>], |
| 42 | + DEFAULT_DATABASE = [<%= $default_database %>]; |
| 43 | + |
| 44 | +<% $svrroles.each |String $role, Any $enable_bit| { -%> |
| 45 | +IF (SELECT COUNT(me.role_principal_id) from sys.server_role_members me |
| 46 | + JOIN sys.server_principals rol ON me.role_principal_id = rol.principal_id |
| 47 | + JOIN sys.server_principals pri ON me.member_principal_id = pri.principal_id |
| 48 | + WHERE rol.type_desc = 'SERVER_ROLE' |
| 49 | + AND rol.name = '<%= $role %>' |
| 50 | + AND pri.name = '<%= $login %>') != <%= $enable_bit %> |
| 51 | +BEGIN |
| 52 | + <% if ($enable_bit == '1') or ($enable_bit == 1) { -%> |
| 53 | + ALTER SERVER ROLE [<%= $role %>] ADD MEMBER [<%= $login %>]; |
| 54 | + <% } else { -%> |
| 55 | + ALTER SERVER ROLE [<%= $role %>] DROP MEMBER [<%= $login %>]; |
| 56 | + <% } -%> |
| 57 | +END |
| 58 | +<% } -%> |
0 commit comments