sql server 授权相关命令

原文:https://blog.csdn.net/hfdgjhv/article/details/83834076

https://www.cnblogs.com/shi-yongcui/p/7755521.html

https://www.cnblogs.com/accumulater/p/6158387.html

https://www.cnblogs.com/xwdreamer/archive/2012/06/25/2562828.html

https://docs.microsoft.com/zh-cn/sql/t-sql/statements/grant-transact-sql?view=sql-server-2017

Grant命令:同意,授予==>授权;为主体授予安全对象的权限。

GRANT 【1】<某种权限> ON 【2】<某个对象> TO 【3】<某个用户、登录名或组> [WITH GRANT OPTION]

适用于: SQL Server(从 2008 开始)

其中:

【1】<某种权限>称为“安全对象的权限”,【2】<某个对象>称为“安全对象”,【3】<某个用户、登录名或组>称为“主体”

【1】<某种权限>是由【2】<某个对象>决定的:不同安全对象拥有不同的权限

安全对象 权限
数据库 BACKUP DATABASE、BACKUP LOG、CREATE DATABASE、CREATE DEFAULT、CREATE FUNCTION、CREATE PROCEDURE、CREATE RULE、CREATE TABLE 和 CREATE VIEW
标量函数 EXECUTE 和 REFERENCES(参考文献)
表值函数 DELETE、INSERT、UPDATE、SELECT 和 REFERENCES(参考文献)
存储过程 EXECUTE
DELETE、INSERT、UPDATE、SELECT 和 REFERENCES(参考文献)
视图 DELETE、INSERT、UPDATE、SELECT 和 REFERENCES(参考文献)

 Deny命令:否认,拒绝==>禁用;为主体禁用安全对象的权限。

Deny 【1】<某种权限> ON 【2】<某个对象> TO 【3】<某个用户、登录名或组> [CASCADE]

适用于: SQL Server(从 2008 开始)

其余同Grant命令。

Revoke命令:撤销,取消==>取消;从主体中取消已有安全对象的权限

Revoke 【1】<某种权限> ON 【2】<某个对象> From 【3】<某个用户、登录名或组> 

适用于: SQL Server(从 2008 开始)

其余同Grant命令。

 实例:在Sql Server 2012上添加一个登陆用户test,使其只能查询某个数据库temp的某两张表[dbo].[T_DD_OP201],[dbo].[T_DD_OP202]

分析:要想成功访问 SQL Server 数据库中的数据, 我们需要两个方面的授权:1.获得准许连接 SQL Server 服务器的权利;2. 获得访问特定数据库中数据的权利(select, update, delete, create table ...)。

备注:操作时必须有管理员的权限

1.在当前数据库temp中创建数据库角色testrole

exec sp_addrole ‘角色名‘ 
exec sp_addrole ‘testrole‘ 

2. 给数据库角色testrole分配权限,使其只能查询两张表

GRANT 权限 ON 表名 TO 角色名
GRANT SELECT ON dbo.T_DD_OP201 TO testrole
GRANT SELECT ON dbo.T_DD_OP202 TO testrole
 

3.创建登陆用户

exec sp_addlogin ‘登陆用户名‘,‘登陆用户密码‘,‘登陆用户默认数据库‘
exec sp_addlogin ‘test‘,‘test123456‘,‘temp‘

这时候,test登陆帐户就可以连接到 SQL Server 服务器上了。但是此时还不能访问数据库中的对象。要使 test帐户能够在temp数据库中访问自己需要的对象, 需要在数据库temp中建立一个“数据库用户”,赋予这个“数据库用户” 某些访问权限,并且把登陆帐户test和这个“数据库用户” 映射起来

4.创建数据库用户

exec sp_adduser ‘登录用户名‘,‘数据库用户名‘,‘数据库角色‘【将Sql Server ‘登陆用户名‘账户添加到具有‘数据库用户名‘的账户的当前数据库中,并将‘数据库用户名‘账户添加到‘数据库角色‘中】
exec sp_adduser ‘test‘,‘dbtestname‘,‘testrole‘

备注:将 SQL Server 登录名test添加到具有用户名dbtestname的当前数据库,并将数据库用户dbtestname添加到testrole数据库角色中。这样,登陆用户和数据库用户就关联起来了,当登陆用户登录后就可以访问所有与它关联的数据库用户所在的数据库中的数据。

习惯上,“数据库用户名” 和 “登陆用户名”的名字相同,即以上语句可以改为

exec sp_adduser ‘test‘,‘test‘,‘testrole‘

实例:数据库用户、角色、登录的删除操作

1.从数据库角色中删除用户

EXEC sp_droprolemember ‘testrole‘, ‘dbtestname‘

备注:需有管理员的权限,并在当前数据库中执行

2.删除当前数据库用户

EXEC sp_revokedbaccess ‘dbtestname‘;

3.删除数据库角色

EXEC sp_droprole ‘testrole‘

4.删除数据库登录

EXEC sp_droplogin ‘test‘

实例:在执行“EXEC sp_droplogin ‘test‘”删除登陆名时发生错误:无法删除登录名 ‘***‘,因为该用户当前正处于登录状态。 (Microsoft SQL Server,错误: 15434)

1.首先执行:EXEC sp_who 查出用户进程的spid,

2.然后执行:kill spid

3.最后执行:sp_droplogin ‘用户名’

                                       

原文地址:https://www.cnblogs.com/luna-hehe/p/10333699.html

时间: 2024-11-10 11:26:16

sql server 授权相关命令的相关文章

Sql Server中暂停命令

Sql Server中暂停几秒再执行后面的命令! -- 语法WAITFOR {    DELAY 'time_to_pass'   | TIME 'time_to_execute'   | [ ( receive_statement ) | ( get_conversation_group_statement ) ]     [ , TIMEOUT timeout ]} 注意:Delay最多不超过24小时 waitfor delay '00:00:10'; -- 暂停10秒waitfor tim

详解SQL Server数据修复命令DBCC的使用

严重级别为 21 表示可能存在数据损坏. 可能的原因包括损坏的页链.损坏的 IAM 或该对象的 sys.objects目录视图中存在无效条目. 这些错误通常由硬件或磁盘设备驱动程序故障而引起. MS Sql Server 提供了很多关于数据库修复的命令,当MS Sql Server 数据库遭到质疑或者是有的无法完成读取时可以尝试这些修复命令. 1. DBCC CHECKDB 重启服务器 use master declare @databasename varchar(255) set @data

SQL SERVER 复制相关存储过程

适用于所有类型复制的过程 过程 说明 sp_addscriptexec 向发布的所有订阅服务器发布 Microsoft SQL Server 脚本(.sql 文件). sp_adjustpublisheridentityrange 调整发布上的标识范围,并基于发布上的阈值重新分配新的范围. sp_changereplicationserverpasswords 更改复制代理在连接到复制拓扑中的服务器时所使用的 Microsoft Windows 帐户或 SQL Server 登录名的存储密码.通

Sql Server 内存相关计数器以及内存压力诊断

在数据库服务器中,内存是数据库对外提供服务最重要的资源之一, 不仅仅是Sql Server,包括其他数据库,比如Oracle,MySQL等,都是一类非常喜欢内存的应用. 在Sql Server服务器中,最理想的情况是Sql Server把所有所需的数据全部缓存到内存中,但是这往往也是不现实的,因为数据往往总是大于可用的物理内存 可以说内存是否存在压力能够直接决定数据库能否高效运行,同时,如果内存出现压力,同时也会影响到CPU的使用和存储性能,可以说是一损俱损,具有连带性. 那么,如何识别内存是否

sql server 2008 相关错误整理(win7系统)

1.在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误.未找到或无法访问服 务器.请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接. step1:开始菜单-->如图找到sql server配置管理器 step2:打开配置管理器,如图所示 step3:右键属性如图: 里面有好多TCP/IP的端口,找到,更改IP地址 为自己电脑的IP地址(或者是127.0.0.1) 在TCP端口添加1433,已启用,更改为:是,然后单击应用,确定. step4:重新启动服

SQL SERVER: 合并相关操作(Union,Except,Intersect) - 转载

SQL Server 中对于结果集有几个处理,值得讲解一下 1. 并集(union,Union all) 这个很简单,是把两个结果集水平合并起来.例如 SELECT * FROM A UNION SELECT * FROM B [注意]union会删除重复值,也就是说A或B中重复的数据行,最终只会出现一次,而union all则会保留重复行. 2. 差异(Except) 就是两个集中不重复的部分.例如 SELECT * FROM A EXCEPT SELECT * FROM B 这个的意思是,凡

sql server数据库常用命令

创建数据库: 命令:create database 数据库名: 示例:create database student: 删除数据库: 命令:drop database 数据库名: 示例:drop database  student; 新建表格: 命令:create table 表名 (列名  数据类型,列名2.....) 示例:create table student (sname  char(20),sid  int) 删除表格: 命令:drop table 表名 示例:drop table

SQL SERVER 事务相关

1 准备数据 及 涉及到的几个设置 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED  --设置事务会话的隔离等级(默认值为 READ UNCOMMITTED ),只对当前进程有效(就是说只对打开SSMS当前查询窗口有效,再打开另一个查询窗口就无效了) SET XACT_ABORT OFF  --设置精确终止(暂且这么叫)开关(默认值为 OFF)   ,只对当前进程有效(就是说只对打开SSMS当前窗口有效,再打开另一个就无效了) IF NOT OB

SQL Server -&gt;&gt; 数据一致性检查命令 -- DBCC CHECKDB

Comming soon!!! 参考文献: CHECKDB From Every Angle: Complete description of all CHECKDB stages