Get the App
SLTechnology News&Howtos  ›  Network Security  › 

How MSSQL exports all user Rights creation statements for db

Shulou Source: shulou.com Published: 2022-06-01 01:58:36 10月04日 Update

Use db

Go

DECLARE

@ Database varchar (255)

@ loginName varchar (255)

@ roleName varchar (255)

@ sql nvarchar (max)

SET @ sql=N''

DECLARE curLogin CURSOR LOCAL for

Select db_name () as dbname,dp.name as username,dpr.name as rolename

From sys.database_principals dp

Join sys.database_role_members drm on drm.member_principal_id=dp.principal_id

Join sys.database_principals dpr on drm.role_principal_id=dpr.principal_id

Join sys.server_principals sp on sp.name=dp.name

Where 1 # 1

-- and dpr.is_fixed_role=1

And dp.type'R'

And dp.type in-- SQL USER,WINDOWS USER AND windows group

Order by username,rolename

OPEN curLogin

FETCH NEXT FROM curLogin INTO @ Database,@loginName,@roleName

WHILE @ @ FETCH_STATUS = 0

BEGIN

SET @ sql=@sql+N'

Use'+ @ Database+'

If not exists (select * from'+ @ Database+'.sys.database_principals where name='''+@LoginName+''')

Begin

CREATE USER'+ QUOTENAME (@ LoginName) +'

End

Else

Begin

ALTER USER'+ QUOTENAME (@ LoginName) + 'with login =' + QUOTENAME (@ LoginName) +'

End

'

-- print @ sql

-- exec sp_executesql @ sql

Select @ sql=@sql+N'

Use'+ @ Database+'

Exec sp_addrolemember''+ @ roleName+''',''+ @ LoginName +'

-- exec sp_executesql @ sql

FETCH NEXT FROM curLogin INTO @ Database,@loginName,@roleName

END

CLOSE curLogin

DEALLOCATE curLogin

-- select len (@ sql)

-print @ sql-- this will be truncated

Exec sysadmin.dbo.printmax @ sql

Go

Tags: Permissions users statements Apple Docker Huawei Linux macOS MariaDB Microsoft MySQL NVidia OPPO Reno Docker MySQL vpn Shulou Technology Xiaomi