这篇文章主要介绍“SQL Server怎么导出db所有用户权限创建语句”,在日常操作中,相信很多人在SQL Server怎么导出db所有用户权限创建语句问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL Server怎么导出db所有用户权限创建语句”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

usedbgoDECLARE@Databasevarchar(255),@loginNamevarchar(255),@roleNamevarchar(255),@sqlnvarchar(max);SET@sql=N'';DECLAREcurLoginCURSORLOCALforselectdb_name()asdbname,dp.nameasusername,dpr.nameasrolenamefromsys.database_principalsdpjoinsys.database_role_membersdrmondrm.member_principal_id=dp.principal_idjoinsys.database_principalsdprondrm.role_principal_id=dpr.principal_idjoinsys.server_principalssponsp.name=dp.namewhere1=1--anddpr.is_fixed_role=1anddp.type<>'R'anddp.typein('S','U','G')--SQLUSER,WINDOWSUSERANDwindowsgrouporderbyusername,rolenameOPENcurLogin;FETCHNEXTFROMcurLoginINTO@Database,@loginName,@roleName;WHILE@@FETCH_STATUS=0BEGINSET@sql=@sql+N'use'+@Database+';ifnotexists(select*from'+@Database+'.sys.database_principalswherename='''+@LoginName+''')beginCREATEUSER'+QUOTENAME(@LoginName)+';endelsebeginALTERUSER'+QUOTENAME(@LoginName)+'withlogin='+QUOTENAME(@LoginName)+'end;'--print@sql--execsp_executesql@sqlselect@sql=@sql+N'use'+@Database+';execsp_addrolemember'''+@roleName+''','''+@LoginName+''''--execsp_executesql@sqlFETCHNEXTFROMcurLoginINTO@Database,@loginName,@roleName;ENDCLOSEcurLoginDEALLOCATEcurLogin;--selectlen(@sql)--print@sql--thiswillbetruncatedexecsysadmin.dbo.printmax@sqlgo

到此,关于“SQL Server怎么导出db所有用户权限创建语句”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!