How to script SQL server database role?

前端 未结 8 1272
遇见更好的自我
遇见更好的自我 2021-02-01 17:49

I need to make a script to copy one particular database role from one SQL server to another.

Is there an easy way to generate a script that creates the role and all the

8条回答
  •  滥情空心
    2021-02-01 18:36

    I added a additional script feature to the code above. The select scripts out the role and permissions so you just need to execute the result:

    -- Update the RoleName with the name of your role
    DECLARE @RoleName VARCHAR(75) = 'RoleName'
    
    DECLARE @RoleTable TABLE ([GrantedBy] VARCHAR (50) NOT NULL, [Permission] VARCHAR (50) NOT NULL, [State] VARCHAR (50) NOT NULL)
    DECLARE @RoleScript VARCHAR(75)
    
    INSERT INTO @RoleTable SELECT p2.[name], dbp.[permission_name], dbp.[state_desc] 
    FROM [sys].[database_permissions] dbp LEFT JOIN [sys].[objects] so
        ON dbp.[major_id] = so.[object_id] LEFT JOIN [sys].[database_principals] p
        ON dbp.[grantee_principal_id] = p.[principal_id] LEFT JOIN [sys].[database_principals] p2
        ON dbp.[grantor_principal_id] = p2.[principal_id]
    WHERE p.[name] = @RoleName
    
    SELECT 'USE [' +  DB_NAME() + '] CREATE ROLE [' + @RoleName + ']' AS 'Create Role'
    SELECT 'USE [' +  DB_NAME() + '] GRANT ' + [Permission] + ' ON SCHEMA::[' + [GrantedBy] + '] TO [' + @RoleName + ']' AS 'Add Permissions' 
    FROM @RoleTable 
    

提交回复
热议问题