SqlServer 服务器角色和数据库角色相关操作

/*------------------------------------------------------------------------------------
								【服务器级别—服务器角色】
------------------------------------------------------------------------------------*/

--	查看固定服务器角色(8个,不可增删,未包括public,每个用户都属于public服务器角色)
EXEC sp_helpsrvrole
EXEC sp_helpsrvrole @srvrolename = 'sysadmin'

--	查看服务器角色所拥有的权限说明(服务器角色详细权限说明!)
EXEC sp_srvrolepermission
EXEC sp_srvrolepermission @srvrolename = 'sysadmin'

--	判断某个登录账号是否拥有某个服务器角色(有则为1,否则为0)
SELECT IS_SRVROLEMEMBER('sysadmin')
SELECT IS_SRVROLEMEMBER('sysadmin','sa')

--	服务器角色在 SQL Server 2012 中可以创建!~
CREATE SERVER ROLE [ServerRoleKK]

--	将登录名添加为某个服务器级角色的成员
EXEC sp_addsrvrolemember @loginame= 'kk' ,@rolename = 'sysadmin' 

--	从服务器级角色中删除 SQL Server 登录名或 Windows 用户或组
EXEC sp_dropsrvrolemember @loginame = 'kk' ,@rolename = 'sysadmin'

--	查看 服务器角色 和 成员 关系
EXEC sp_helpsrvrolemember
EXEC sp_helpsrvrolemember @srvrolename = 'sysadmin'

--	查看 服务器角色 和 成员 关系(更详细)
SELECT rsp.principal_id as [role_principal_id],rsp.name AS [Server_Role]
,sp.principal_id,sp.name,sp.[sid]
,CASE WHEN sp.[type]='S' THEN 'SQL 登录名'
	WHEN sp.[type]='U' THEN 'Windows 登录名'
	WHEN sp.[type]='G' THEN 'Windows 组'
	WHEN sp.[type]='R' THEN '服务器角色'
	WHEN sp.[type]='C' THEN '映射到证书的登录名'
	WHEN sp.[type]='K' THEN '映射到非对称密钥的登录名'
END AS [Principal_Type]
,sp.create_date,sp.modify_date,sp.is_disabled
FROM sys.server_principals sp
INNER JOIN sys.server_role_members srm ON sp.principal_id=srm.member_principal_id
INNER JOIN sys.server_principals rsp ON srm.role_principal_id=rsp.principal_id

--	查看服务器对象权限控制情况
SELECT sp1.principal_id AS grantor_principal_id,sp1.name AS grantor_name,sp1.type_desc AS grantor_type_desc
,sp2.principal_id AS grantee_principal_id,sp2.name AS grantee_name,sp2.type_desc AS grantee_type_desc
,spe.class_desc,spe.state_desc,spe.permission_name
FROM sys.server_principals sp1
INNER JOIN sys.server_permissions spe ON sp1.principal_id=spe.grantor_principal_id
INNER JOIN sys.server_principals sp2 ON sp2.principal_id=spe.grantee_principal_id

--对于服务器级别权限控制更改:安全性——>登录名——右键登录账号——>属性——>安全对象——>搜索(有服务器/端点/登录名)——>下方控制权限
/*------------------------------------------------------------------------------------
								【数据库级别—数据库角色】
------------------------------------------------------------------------------------*/

--	查看固定数据库角色(不包括public角色,每个数据库用户都属于 public 数据库角色)
EXEC sp_helpdbfixedrole
EXEC sp_helpdbfixedrole @rolename = 'db_owner'

--	查看数据库角色所拥有的权限说明(数据库角色详细权限说明!)
EXEC sp_dbfixedrolepermission
EXEC sp_dbfixedrolepermission @rolename = 'db_owner'

--	当前数据库中有关角色的信息(至少10个固定数据库角色)
EXEC sp_helprole
EXEC sp_helprole @rolename = 'db_owner'		--IsAppRole:是否应用程序角色

--	某个角色的成员的信息
EXEC sp_helprolemember
EXEC sp_helprolemember @rolename = 'db_owner'

--	当前用户是否为指定 Microsoft Windows 组或 SQL Server 数据库角色的成员
SELECT IS_MEMBER('db_owner')

--	创建数据库角色(如创建角色 Myrole 并拥有db_owner角色)
CREATE ROLE MyRole AUTHORIZATION db_owner

--	授予角色权限(当前数据库中将数据库角色授予 数据库用户、数据库角色、Windows登录名或Windows 组)
EXEC sp_addrolemember @rolename= 'MyRole',@membername = 'MyUser'

--	回收角色权限(当前数据库中将数据库角色回收,同上相反)
EXEC sp_addrolemember @rolename= 'MyRole',@membername = 'MyUser'

--	更改角色名称
ALTER ROLE MyRole WITH NAME = NewRole

--	删除角色
DROP ROLE NewRole

--	当前 数据库角色 与 用户 关系
SELECT u.name as UserName,u.type_desc,u.default_schema_name,g.name as DBRole
FROM sys.database_principals u
inner join sys.database_role_members m on u.principal_id = m.member_principal_id
inner join sys.database_principals g on g.principal_id = m.role_principal_id
ORDER BY UserName,DBRole

--对于数据库级别权限控制更改:某数据库——>安全性——角色——>数据库角色——>右键角色——>可自行添加成员
/*------------------------------------------------------------------------------------
								【数据库级别-应用程序角色】
------------------------------------------------------------------------------------*/

应用程序角色是一个数据库主体,只能通过其他数据库中为 guest 授予的权限来访问这些数据库
其他数据库中的应用程序角色将无法访问任何已禁用 guest 的数据库
可以只允许通过特定应用程序连接的用户访问特定数据
与数据库角色不同的是,应用程序角色默认情况下不包含任何成员,而且是非活动的
启用应用程序角色需要密码
应用程序角色无法访问服务器级元数据,若允许访问,需开启跟踪标志4616( DBCC TRACEON(4616,-1))

--	创建应用程序角色
CREATE APPLICATION ROLE [MyAppRole] WITH DEFAULT_SCHEMA = [dbo], PASSWORD = N'AppRole'

--	更改应用程序角色的名称、密码或默认架构
ALTER APPLICATION ROLE [MyAppRole]
	WITH NAME = [AppRole],
	PASSWORD = 'AppRole',
	DEFAULT_SCHEMA = [dbo]

--	激活与当前数据库中的应用程序角色关联的权限(不能在其他存储过程或用户定义事务中执行)
DECLARE @cookie varbinary(8000)
EXEC sp_setapprole
  @rolename = 'AppRole'
, @password = 'AppRole'
--, @password = { encrypt N'AppRole' }	--ODBC encrypt 函数加密
, @encrypt = 'none'						--'none'|'odbc':是否模糊加密处理
, @fCreateCookie = true					-- true|false :是否创建 cookie
, @cookie = @cookie OUTPUT				--获取应用程序角色之前安全上下文
SELECT @cookie	--记住cookie

--	查看当前登录用户(发现为 [AppRole])
SELECT CURRENT_USER,USER_NAME()

--	停用应用程序角色并恢复到前一个安全上下文(cookie 为sp_setapprole创建的)
EXEC sp_unsetapprole @cookie = 0x5E76DB4EF3E20388C5CBDE4FEB63DC409BAAD344D11919EF23AF18743A8B40BBEB3F972E3D84C5F7FBE2C1A853934EBC0100

--	删除应用程序角色
DROP APPLICATION ROLE [AppRole]

--	查看用程序角色
SELECT * FROM sys.sysusers WHERE isapprole = 1
时间: 2024-10-18 15:56:00

SqlServer 服务器角色和数据库角色相关操作的相关文章

SQLServer 服务器角色和数据库角色权限详解

SQLServer中服务器角色和数据库角色权限详解 转自:http://blog.csdn.net/e_online/article/details/4597957 角色 当几个用户需要在某个特定的数据库中执行类似的动作时(这里没有相应的Windows用户组),就可以向该数据库中添加一个角色(role).数据库角色指定了可以访问相同数据库对象的一组数据库用户.数据库角色的成员可以分为如下几类:Windows用户组或用户账户SQL Server登录其他角色SQL Server的安全体系结构中包括了

SQLServer中服务器角色和数据库角色权限详解

SQLServer中服务器角色和数据库角色权限详解 by e-online 26. 九月 2009 18:55 coming from http://blog.csdn.net/e_online/article/details/4597957 角色 当几个用户需要在某个特定的数据库中执行类似的动作时(这里没有相应的Windows用户组),就可以向该数据库中添加一个角色(role).数据库角色指定了可以访问相同数据库对象的一组数据库用户. 数据库角色的成员可以分为如下几类: Windows用户组或

转:SQL Server中服务器角色和数据库角色权限详解

当几个用户需要在某个特定的数据库中执行类似的动作时(这里没有相应的Windows用户组),就可以向该数据库中添加一个角色(role).数据库角色指定了可以访问相同数据库对象的一组数据库用户. 数据库角色的成员可以分为如下几类: Windows用户组或用户账户 SQL Server登录 其他角色 SQL Server的安全体系结构中包括了几个含有特定隐含权限的角色.除了数据库拥有者创建的角色之外,还有两类预定义的角色.这些可以创建的角色可以分为如下几类: 固定服务器 固定数据库 用户自定义 固定服

CS数据库的相关操作

备注:我们对于CS数据库的操作多数情况下只是查询操作,尽量不要在数据库中直接修改记录的值 第一.首先备份数据库 1.进入mysql数据库 [[email protected] ~]# mysql -u root -p Enter password: Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 188 Server version: 5.1.61-log Source d

mysql数据库相关基础与数据库的相关操作

mysql是目前主流的数据库管理系统之一,目前还是免费的. 数据库的发展史,基本概念就不再赘述,总之数据库就是存储数据的仓库,而我们所见到的所有其实都可以归类成数据. 什么是sql? SQL:(Structured Query Language)是结构化查询语言缩写.是一门专门与数据库管理系统打交道的语言. SQL语言:是关系型数据库的标准语言, 其主要用于存取数据,查询数据,更新数据和管理数据库系统等操作. 具体可以把SQL分为4个部分: 数据控制语言 ( DCL): 主要用于控制用户的访问权

SQLServer 维护脚本分享(04)服务器角色和数据库角色相关操作

/*------------------------------------------------------------------------------------ [服务器级别-服务器角色] ------------------------------------------------------------------------------------*/ -- 查看固定服务器角色(8个,不可增删,未包括public,每个用户都属于public服务器角色) EXEC sp_hel

mysql数据库和mongodb数据库的相关操作以及两个数据库的区别

在docs命令中执行数据操作 MySQL数据库 先启动MySQL服务器  net start mysql 进入MySQL服务器MySQL -uroot -p(这里写你的数据库密码) (-P是从哪个端口进) 我第一次操作是就是因为电脑上 有 MySQL  MySQL57 MySQLla 三个服务 引起端口冲突 导致 我 找不到相应的数据 数据库操作 create database   创建数据库 show databases   显示MySQL服务上的数据库 use  数据库          使

SQLserver使用映射表进行数据相关操作

基本需求: 老数据有老数据的顺序编码规则,新数据有新数据的顺序编码规则,但是老数据的编码还是要更新相应的东西,新数据也得实时更新,在新数据中已经用新编码规则对老数据对进行编码,在上报表中既要新增新数据,也要更新老数据与现有数据.------------------------------------------------- --Author:Oliver QIN --Date:2015-11-07 --DESC:使用映射表对老数据进行更新 ---------------------------

简单封装sqlite3 实现实体对象与关系型数据库的相关操作【IOS】

源码如下,只有一个类文件 // //  DBHelper.h // //  Created by Jason_Msbaby on 15/10/15. //  Copyright ? 2015年 张杰. All rights reserved. // /**  *  简单封装了对于sqlite的使用 没有加入对事务及其他复杂的特性     基于传入sql语句的方式进行执行     使用单例模式     根据model对象自动创建表 只支持 NSInter NSString float 数据类型的支