sp获取用户权限,打印出批量赋权语句

ALTER PROCEDURE [dbo].[usp_ShowUserPermission]
AS
BEGIN
DECLARE @px INT = 0
DECLARE @loginuser VARCHAR(max) ;
DECLARE @dbname VARCHAR(MAX)
DECLARE @sql VARCHAR(MAX)
SELECT @loginuser = SYSTEM_USER ;
IF OBJECT_ID(‘tempdb..#dbs‘, ‘U‘) IS NOT NULL
DROP TABLE #dbs
IF OBJECT_ID(‘tempdb..#permiss‘, ‘U‘) IS NOT NULL
DROP TABLE #permiss
IF OBJECT_ID(‘tempdb..#execsql‘, ‘U‘) IS NOT NULL
DROP TABLE #execsql
CREATE TABLE #execsql
(
id INT IDENTITY(1, 1) ,
esql VARCHAR(max)
)
CREATE TABLE #permiss
(
[dbname] [varchar](60) NOT NULL ,
[user] [sysname] NOT NULL ,
[userType] [nvarchar](60) NULL ,
[permission] [nvarchar](128) NULL ,
[PermissionState] [nvarchar](60) NULL ,
[ObjectName] [nvarchar](128) NULL ,
[Schema] [nvarchar](128) NULL ,
[ObjectType] [varchar](60) NULL ,
[PermissionClass] [nvarchar](60) NULL
)
SELECT id = IDENTITY( INT ,1,1 ),
name
INTO #dbs
FROM master.sys.databases db
WHERE db.database_id > 4
AND db.name NOT IN (‘dbcenter‘,‘ReportServer‘,‘ReportServerTempDB‘,‘TargetDB‘,‘InitiatorDB‘)
WHILE ( @px < ( SELECT MAX(id)
FROM #dbs
) )
BEGIN
SELECT TOP 1
@dbname = #dbs.name
FROM #dbs
SET @sql = ‘use ‘ + @dbname + ‘ SELECT ‘ + ‘‘‘‘ + @dbname
+ ‘‘‘‘ + ‘ as ‘‘dbname‘‘, c.NAME AS ‘‘user‘‘ ,
c.type_desc AS ‘‘userType‘‘ ,
a.permission_name AS ‘‘permission‘‘ ,
a.state_desc AS ‘‘PermissionState‘‘ ,
b.name ‘‘ObjectName‘‘ ,
OBJECT_SCHEMA_NAME(a.major_id) AS ‘‘Schema‘‘ ,
CASE b.type
WHEN ‘‘AF‘‘ THEN ‘‘Aggregate function (CLR)‘‘
WHEN ‘‘C‘‘ THEN ‘‘CHECK constraint‘‘
WHEN ‘‘D‘‘ THEN ‘‘DEFAULT (constraint or stand-alone)‘‘
WHEN ‘‘F‘‘ THEN ‘‘FOREIGN KEY constraint‘‘
WHEN ‘‘PK‘‘ THEN ‘‘PRIMARY KEY constraint‘‘
WHEN ‘‘P‘‘ THEN ‘‘SQL stored procedure‘‘
WHEN ‘‘PC‘‘ THEN ‘‘Assembly (CLR) stored procedure‘‘
WHEN ‘‘FN‘‘ THEN ‘‘SQL scalar function‘‘
WHEN ‘‘FS‘‘ THEN ‘‘Assembly (CLR) scalar function‘‘
WHEN ‘‘FT‘‘ THEN ‘‘Assembly (CLR) table-valued function‘‘
WHEN ‘‘R‘‘ THEN ‘‘Rule (old-style, stand-alone)‘‘
WHEN ‘‘RF‘‘ THEN ‘‘Replication-filter-procedure‘‘
WHEN ‘‘S‘‘ THEN ‘‘System base table‘‘
WHEN ‘‘SN‘‘ THEN ‘‘Synonym‘‘
WHEN ‘‘SQ‘‘ THEN ‘‘Service queue‘‘
WHEN ‘‘TA‘‘ THEN ‘‘Assembly (CLR) DML trigger‘‘
WHEN ‘‘TR‘‘ THEN ‘‘SQL DML trigger‘‘
WHEN ‘‘IF‘‘ THEN ‘‘SQL inline table-valued function‘‘
WHEN ‘‘TF‘‘ THEN ‘‘SQL table-valued-function‘‘
WHEN ‘‘U‘‘ THEN ‘‘Table ([user-defined])‘‘
WHEN ‘‘UQ‘‘ THEN ‘‘UNIQUE constraint‘‘
WHEN ‘‘V‘‘ THEN ‘‘View‘‘
WHEN ‘‘X‘‘ THEN ‘‘Extended stored procedure‘‘
WHEN ‘‘IT‘‘ THEN ‘‘Internal table‘‘
END ‘‘ObjectType‘‘ ,
a.class_desc ‘‘PermissionClass‘‘ from ‘ + @dbname
+ ‘.sys.database_principals c
left join ‘ + @dbname
+ ‘.sys.database_permissions a ON c.principal_id = a.grantee_principal_id
left JOIN ‘ + @dbname + ‘.sys.sysobjects b ON b.id = a.major_id where c.type = ‘‘S‘‘ and c.name not in (‘‘dbo‘‘,‘‘sys‘‘,‘‘sa‘‘,‘‘guest‘‘,‘‘INFORMATION_SCHEMA‘‘,‘‘‘
+ @loginuser + ‘‘‘)‘

-- database_principals type=s sqluser,type=R database role
INSERT INTO #permiss
EXEC ( @sql
)
SET @px = @px + 1
DELETE #dbs
WHERE name = @dbname
END
SELECT * FROM #permiss
SELECT ‘use ‘ + dbname +‘ IF EXISTS (SELECT NAME FROM sys.sysusers WHERE name=‘‘‘+[user]+‘‘‘)
BEGIN DROP USER ‘+[user]+‘ END
CREATE USER ‘+[user]+‘‘ AS createUser FROM #permiss GROUP BY dbname,[user]
INSERT #execsql
SELECT ‘use ‘ + dbname
+CASE PermissionClass WHEN ‘OBJECT_OR_COLUMN‘ THEN ‘ grant ‘+permission+‘ on ‘+ObjectName+‘ to ‘+[user] WHEN ‘DATABASE‘
THEN ‘ grant ‘+permission+‘ to ‘+[user] END
FROM #permiss WHERE permission <>‘CONNECT‘
SELECT * FROM #execsql
END

时间: 2024-08-15 14:24:18

sp获取用户权限,打印出批量赋权语句的相关文章

小程序原生js获取用户权限

1.首先要有一个按钮 <view name="authorizemodal"> <view class="drawer_screen" wx:if="{{isauthorizeModal}}"> <view class="drawer_box fishqccenter phonechoosebox"> <view> <image style="width:90%;

数据库(学习整理)----2--关于Oracle用户权限的授权和收权

知识点: 1.Oracle数据库中所用的用户等级是平级的!只是每个用户的权限不同而已! 2.在一个用户登录后,可以在自己的登录状态下访问其他用户的数据缓冲区.表.以及表的操作!(只要该用户用权限!) 3.我们可以在一个有创建用户权限的用户登录后,进行创建(赋予权限等)操作,创建后的用户和当前用户是平级的!权限不同而已!(1).使用 sysDBA登录 创建一个Jason用户,密码:abc123 SQL语句: create user Jason identified by abc123; 执行后效果

权限管理之获取用户权限信息

对象的本质是id值 原文地址:https://www.cnblogs.com/jintian/p/11255265.html

MySQL几条赋权语句

grant all PRIVILEGES on *.* to [email protected]'111.111.111.101' identified by 'cheyooh_user'; grant all PRIVILEGES on cheyooh_user.* to [email protected]'111.111.111.100' identified by 'cheyooh_user'; GRANT Select ON *.* TO [email protected]'218.17

Android之QQ授权登录获取用户信息

有时候我们开发的app须要方便用户简单登录.能够让用户使用自己的qq.微信.微博登录到我们自己开发的app. 今天就在这里总结一下怎样在自己的app中集成QQ授权登录获取用户信息的功能. 首先我们打开腾讯开发平台这个网页,点击---->移动应用---->创建应用,成功创建应用后.能够产生我们须要的App ID和App Key,例如以下图所看到的: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmVhcl9odWFuZ3poZW4=/font/5a6

【Spring Security】二、数据库管理用户权限

一 引入相关的jar包 这个例子用的是mysql数据库和c3p0开源的jdbc连接池,在项目的pom.xml中引入jar包 <!-- Mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.21</version> </dependency>

MD5加密&获取用户IP、ID、系统时间

1.通常我们在数据库中保存用户信息的时候需要把密码和一些其他重要信息,用加密的方式保存,这就会用到下面的MD5加密程序段 MessageDigest md=MessageDigest.getInstance("MD5"); md.update("被加密的字符串".getBytes()); String md5sString =new BigInteger(1,md.digest()).toString(16); 2.获取用户IP,ID,系统时间语句 String u

fixed_date , 赋权技巧 ,procedure执行方式, PL/SQL注意的地方

本文讨论4个知识点, 1. fixed_date参数 2. 赋权技巧 3. procedure执行的方式 4. PL/SQL中要注意的几个地方 fixed_date参数 客户想修改oracle的 系统时间做测试,但oracle的默认系统时间是读取其所在server的系统时间的,所以不能随便修改.不过可以修改fixed_date参数,该参数的作用就是让sysdate在oracle中返回指定的值,便于测试. 命令如下: 设置时间 alter system set fixed_date='2014-0

微信获取用户地理位置,查找出附近所有商家

微信获取用户地理位置,官网上文档不太完善,还是附上 微信获取用户地理位置开发文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp142114084 总的来说分为两大部分 1,生成JS-SDK权限验证签名 2,使用地理位置接口获取坐标 完整类文件代码如下: <?php class JSSDK { private $appId; private $appSecret; public function __construct($a