以下内容主要针对database层面的数据访问权限(比如select, insert, update, delete, execute…)

1.直接给user权限
GRANT EXECUTE TO [user]

2.通过role 控制权限,把user加入role中,继承Role所拥有的权限
GRANT EXECUTE TO [Role]
ALTER ROLE [Role] ADD MEMBER [Member]

3.通过app role的方式访问数据库
Application Role 是数据库级别的Role,不包含任何user,不能直接在数据库中使用,只能通过应用程序连接数据库使用。

Application Role不能和前面两种方式同时生效,如果某个login已经有数据库对应的User,而且赋予了相应的权限,但登录以后又激活了Application Role,那么这个login的security context就会切换到Application Role的security context,也就是只有Application Role的权限起作用。

需要注意的是在应用程序中激活了Application role之后,要访问其他的数据库只能用Guest account,鉴于Guest account被很多DBA视为眼中钉肉中刺,想用Application Role的还是请三思。

4.Sp 的 execute as XX
这是一种较为推荐的方式,可以在最小的粒度上控制权限。
这种方法就像领了尚方宝剑,比如 A是sp1的owner,sp1定义为 execute as owner,然后B有sp1的执行权限,那么B执行sp1的时候就拥有了A的所有权限,有效期到sp1执行结束。

类似的用法还有execute as caller/self/”username”/”loginName”. 默认情况,如果sp不写execute as 语句,用的是execute as caller.

5.Owned schema
Schema作为数据库中对象的集合,也可以用来控制权限,通过给用户赋予schema的权限,就同时赋予了schema包含的所有table,view,sp的权限。
可以在赋予schema权限之后,再在对象级别(table,view…)修改访问权限,最终以对象级别的权限为优先。

Sql Server数据库对象访问权限控制的更多相关文章

  1. 查询Sql Server数据库对象结构

    查询Sql Server数据库对象结构 查询数据库 查询架构 查询表 查询列 查询存储过程 查询视图 1.查询某一服务器下所有数据库 select t.[name] as 数据库 from sys.d ...

  2. 2014-07-30 MVC框架中对SQL Server数据库的访问

    今天是在吾索实习的第16天.我自己主要学习了基于MVC框架的系统的开发时,对SQL Server数据库的相关访问.其步骤如下: 第一步,在Models文件夹中创建一个类,并命名为Movies.cs,如 ...

  3. SQL Server 2016 行级别权限控制

    背景 假如我们有关键数据存储在一个表里面,比如人员表中包含员工.部门和薪水信息.只允许用户访问各自部门的信息,但是不能访问其他部门.一般我们都是在程序端实现这个功能,而在sqlserver2016以后 ...

  4. SQL Server 数据库对象命名参考

    一. 引言 编码规范是一个优秀程序员的必备素质,然而,有很多人非常注重程序中变量.方法.类的命名,却忽视了同样重要的数据库对象命名.这篇文章结合许多技术文章和资料,以及我自己的开发经验,对数据库对象的 ...

  5. 基于Python的SQL Server数据库对象同步轻量级实现

    缘由 日常工作中经常遇到类似的问题:把某个服务器上的某些指定的表同步到另外一台服务器.类似需求用SSIS或者其他ETL工作很容易实现,比如用SSIS的话就可以,但会存在相当一部分反复的手工操作.建源的 ...

  6. SQL Server 关于列的权限控制

    在SQL SERVER中列权限(Column Permissions)其实真没有什么好说的,但是好多人对这个都不甚了解,已经被人问了几次了,所以还是在这里介绍一下,很多人都会问,我能否单独对表的某列授 ...

  7. 1433端口无法连接(sql server 数据库无法访问问题)解决思路

    登录远程SQL服务器一 看ping 服务器IP能否ping通. 这个实际上是看和远程sql server 2000服务器的物理连接是否存在.如果不行,请检查网络,查看配置,当然得确保远程sql ser ...

  8. SQL server数据库端口访问法

    最近数据库连接,也是无意中发现了这个问题,数据库可根据端口来连接 我用的是sql2014测试的,在安装其他程序是默认安装了sql(sql的tcp/ip端口为xxx),服务也不相同,但是由于比较不全,我 ...

  9. SQL Server 查看对象的权限

    例子 1. 查看登录名 loginA的权限: create login loginA with password = '123456'; go use studio; create user logi ...

随机推荐

  1. ios 给移动的控件添加点击事件

    前言: 给一个UIView做移动动画,虽然看起来frame在持续改变,但是它的frame已经是最终值了. 也就是说表面看到的动画都是假象,它的真实位置已经是固定的了.所以只有点击在他的真实frame范 ...

  2. POJ2142:The Balance (欧几里得+不等式)

    Ms. Iyo Kiffa-Australis has a balance and only two kinds of weights to measure a dose of medicine. F ...

  3. 【旧文章搬运】从PEB获取内存中模块列表

    原文发表于百度空间,2008-7-25========================================================================== PEB中的L ...

  4. 【旧文章搬运】Windows内核常见数据结构(进程相关)

    原文发表于百度空间,2008-7-24========================================================================== 进程的相关结 ...

  5. FTP相关内容

    FTP相关介绍 FTP 1)File Transfer Protocol ( FTP ) 是相当古老的网络协议之一,他最主要的功能就是进行 Server端与 Client 端之间的档案传送的功能.这个 ...

  6. hdoj1007【几何】【未完待续】

    题意: 在一个平面上有n(1e5)个点,然后求一个圆来包住这些点,求这个圆的最小半径. 思考: 要使一个圆直接包了这些点,没有任何思路..

  7. MySQL 使用 MySQLDump 复制数据库

    1.导出整个数据库  mysqldump -u 用户名 -p 数据库名 > 导出的文件名      mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.s ...

  8. linux 问题二 查看系统是32位还是64位

    方法: 1.uname -a 2.uname -m 3.file /sbin/init 4.arch 5.Settings -> Details 说明: 1. i386 适用于intel和AMD ...

  9. P4141 消失之物(背包)

    传送门 太珂怕了……为什么还有大佬用FFT和分治的…… 首先如果没有不取的限制的话就是一个裸的背包 然后我们考虑一下,正常的转移的话代码是下面这个样子的 ;i<=n;++i) for(int j ...

  10. Linux下备份MySQL数据库的Shell脚本

    数据库每天都想备份,手动备份太麻烦而又容易忘记,所以写了一个自动备份MySQL数据库的脚本,加入定时计划中,每天自运运行. 创建Shell脚本代码如下,命名为mysql_dump.sh #!/bin/ ...