Sql Server来龙去脉系列 必须知道的权限控制核心篇
近写了《Sql Server来龙去脉系列 必须知道的权限控制基础篇》,感觉反响比较大。这可能也说明了很多程序猿对数据库权限控制方面比较感兴趣,或者某些技术点了解的没有很透彻。 有些人看了上篇感觉意犹未尽,介绍的都是基础方面,不够深入。那么本篇内容就比较符合大家的胃口,本篇包括了数据库常用的权限控制,例如服务角色以及数据库角色管理。
提几个问题
在介绍权限控制之前先提下面几个问题,如果有回答不上来的问题,本篇内容你应该看。如果很清晰的回答出这些问题,那么本篇接下来的内容你可以直接忽略。
1.登陆账号和用户有什么区别;
2.服务角色和数据库角色有什么区别;
3.主体、用户、架构之间的区别(Principal、User、Schema);
温故而知新
在《Sql Server来龙去脉系列 必须知道的权限控制基础篇》中,我们介绍了登陆账号的增删改查、数据库的增删该查以及这些元数据对应的系统视图和操作语法。但是,一个登陆账号被创建后并不能创建或者操作数据库,必须经过授予某些权限后才能操作管理数据库。如何给登陆账号授予正确的权限,就是本篇的主要内容。
让人混淆的几个概念
1.主体
主体是可以请求SQL SERVER资源的实体。主体按照作用范围可分为三类主体:Windows级别主体、服务器级别主体、数据库级别主体。master数据库中有两张视图sys.server_principals、sys.server_principals用于存储主体数据。先来看看sys.server_principals视图,执行以下语句:
select principal_id, name, type, type_desc from sys.server_principals ,视图说明:https://msdn.microsoft.com/zh-cn/library/ms188786(v=sql.120).aspx