45 lines
2.0 KiB
Transact-SQL
45 lines
2.0 KiB
Transact-SQL
USE SL2007
|
|
--USE dba
|
|
|
|
-- Script to generate user creation and role membership
|
|
DECLARE @UserScripts NVARCHAR(MAX) = '';
|
|
DECLARE @RoleScripts NVARCHAR(MAX) = '';
|
|
|
|
-- Generate user creation scripts
|
|
SELECT @UserScripts = @UserScripts + 'CREATE USER [' + dp.name + '] FOR LOGIN [' + dp.name + '];' + CHAR(13) + CHAR(10)
|
|
FROM sys.database_principals dp
|
|
WHERE dp.type IN ('S', 'U', 'G') AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys');
|
|
|
|
-- Generate role membership scripts
|
|
SELECT @RoleScripts = @RoleScripts + 'ALTER ROLE [' + dr.name + '] ADD MEMBER [' + dp.name + '];' + CHAR(13) + CHAR(10)
|
|
FROM sys.database_principals dp
|
|
JOIN sys.database_role_members drm ON dp.principal_id = drm.member_principal_id
|
|
JOIN sys.database_principals dr ON drm.role_principal_id = dr.principal_id
|
|
WHERE dp.type IN ('S', 'U', 'G') AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys');
|
|
|
|
-- Print user creation and role membership scripts
|
|
PRINT @UserScripts;
|
|
PRINT @RoleScripts;
|
|
|
|
-- Script to generate permissions
|
|
DECLARE @PermissionScripts NVARCHAR(MAX) = '';
|
|
|
|
SELECT @PermissionScripts = @PermissionScripts +
|
|
CASE
|
|
WHEN p.state_desc = 'GRANT' THEN 'GRANT '
|
|
WHEN p.state_desc = 'DENY' THEN 'DENY '
|
|
WHEN p.state_desc = 'REVOKE' THEN 'REVOKE '
|
|
END + p.permission_name +
|
|
CASE
|
|
WHEN p.class_desc = 'OBJECT_OR_COLUMN' THEN ' ON [' + OBJECT_NAME(p.major_id) + ']'
|
|
WHEN p.class_desc = 'DATABASE' THEN ' ON DATABASE::[' + DB_NAME() + ']'
|
|
WHEN p.class_desc = 'SCHEMA' THEN ' ON SCHEMA::[' + SCHEMA_NAME(p.major_id) + ']'
|
|
WHEN p.class_desc = 'TYPE' THEN ' ON TYPE::[' + TYPE_NAME(p.major_id) + ']'
|
|
ELSE ''
|
|
END + ' TO [' + dp.name + '];' + CHAR(13) + CHAR(10)
|
|
FROM sys.database_permissions p
|
|
JOIN sys.database_principals dp ON p.grantee_principal_id = dp.principal_id
|
|
WHERE dp.type IN ('S', 'U', 'G') AND dp.name NOT IN ('dbo', 'guest', 'INFORMATION_SCHEMA', 'sys');
|
|
|
|
-- Print permissions scripts
|
|
PRINT @PermissionScripts; |