怎么在SQL Server中处理数据库角色权限

  介绍

这期内容当中小编将会给大家带来有关怎么在SQL Server中处理数据库角色权限,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

,,,1:遍历所有用户数据库(排除了系统数据库以及一些特殊数据库),发现该数据库不存在这些通用数据库角色,那么就创建相关数据库角色。

,,,2:遍历所有用户数据库,为相关数据库角色授权,例如,如果发现某个新增的存储过程,没有授权给db_procedure_execute数据库角色。那么就执行授权操作。

当然目前还在测试,应用阶段,以后会根据具体相关需求,不断完善相关功能。

USE  YourSQLDba;   去   ,   ,   IF  EXISTS  (SELECT  1,得到sys.procedures  WHERE  type=& # 39; p # 39;,以及name=& # 39; db_common_role_grant_rigths& # 39;)   开始   ,DROP  PROCEDURE  Maint.db_common_role_grant_rigths;   结束   去   ,   CREATE  PROCEDURE  Maint.db_common_role_grant_rigths   作为   开始   ,   DECLARE  @database_id  INT;   DECLARE  @database_name  sysname;   DECLARE  @cmdText , NVARCHAR (MAX);   DECLARE  @prc_text , NVARCHAR (MAX);   DECLARE  @RowIndex , INT;   ,   IF  OBJECT_ID (& # 39; TempDB.dbo。# # 39;数据库),IS  NOT  NULL   ,DROP  TABLE  dbo。#数据库;   ,   CREATE  TABLE  #数据库   (   ,database_id  INT,   database_name  sysname   )   ,   IF  OBJECT_ID (& # 39; TempDB.dbo # sql_text& # 39;), IS  NOT  NULL   ,DROP  TABLE  dbo。# sql_text;   ,   ,   CREATE  TABLE  # sql_text   (   ,sql_id  INT 身份(1,1),   ,sql_cmd  NVARCHAR (MAX)   )   ,   INSERT  INTO  #数据库   SELECT  database_id    ,名字   得到sys.databases   WHERE  name  NOT 拷贝(,& # 39;主# 39;,,& # 39;tempdb # 39;,, & # 39;模型# 39;,,& # 39;msdb& # 39;,   ,,,,,& # 39;分布# 39;,,& # 39;ReportServer& # 39;   ,,,,,& # 39;ReportServerTempDB& # 39;,, & # 39; YourSQLDba& # 39;,)   以及才能state =, 0;,, state_desc=ONLINE    ,   ,   ——开始循环每一个用户数据库(排除了上面相关数据库)   WHILE  1=1   开始   ,   ,   ,SELECT  TOP  1, @database_name=, database_name    得到#数据库   ,ORDER  BY  database_id;   ,   ,   ,IF  @@ROWCOUNT =0,   打破才能;   ,   ,——打印(@database_name);   ,   ,——SP_EXECUTESQL 中切换数据库不能当参数传入。   ,   ,——创建数据库角色db_procedure_execute   ,SET  @cmdText =, & # 39; USE  & # 39;, +, @database_name  +, & # 39;; & # 39;, + CHAR (10)   ,   ,SELECT  @cmdText  +=, & # 39; IF  NOT  EXISTS  (SELECT  1,得到sys.database_principals  WHERE  name =& # 39; & # 39; db_procedure_execute& # 39; & # 39;)   ,,,,,开始   ,,,,,,CREATE  ROLE  [db_procedure_execute], AUTHORIZATION  [dbo];   ,,,,,最终获得& # 39;,+,CHAR (10);   ,   ,   ,   ,——创建数据库角色db_function_execute   ,SELECT  @cmdText  +=, & # 39; IF  NOT  EXISTS  (SELECT  1,得到sys.database_principals  WHERE  name =& # 39; & # 39; db_function_execute& # 39; & # 39;)   ,,,,,开始   ,,,,,,CREATE  ROLE  [db_function_execute], AUTHORIZATION  [dbo];   ,,,,,结束,,+,CHAR (10);   ,   ,   ,——创建数据库角色db_view_table_definition   ,SELECT  @cmdText  +=, & # 39; IF  NOT  EXISTS  (SELECT  1,得到sys.database_principals  WHERE  name =& # 39; & # 39; db_view_table_definition& # 39; & # 39;)   ,,,,,开始   ,,,,,,CREATE  ROLE  [db_view_table_definition], AUTHORIZATION  [dbo];   ,,,,,最终获得& # 39;,+,CHAR (10);   ,   ,——创建数据库角色db_view_view_definition   ,SELECT  @cmdText  +=, & # 39; IF  NOT  EXISTS  (SELECT  1,得到sys.database_principals  WHERE  name =& # 39; & # 39; db_view_view_definition& # 39; & # 39;)   ,,,,,,开始   ,,,,,,CREATE  ROLE  [db_view_view_definition], AUTHORIZATION  [dbo];   ,,,,,,最终获得& # 39;,+,CHAR (10);   ,   ,——创建数据库角色db_view_procedure_definition   ,SELECT  @cmdText  +=, & # 39; IF  NOT  EXISTS  (SELECT  1,得到sys.database_principals  WHERE  name =& # 39; & # 39; db_view_procedure_definition& # 39; & # 39;)   ,,,,,开始   ,,,,,,CREATE  ROLE  [db_view_procedure_definition], AUTHORIZATION  [dbo];   ,,,,,最终获得& # 39;,+,CHAR (10);   ,   ——才能创建数据库角色db_view_function_definition   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在SQL Server中处理数据库角色权限