zoukankan      html  css  js  c++  java
  • 关于 sql server 数据库权限乱七八糟的一些东西

    研究权限这些东西主要是因为今天正好在折腾数据库备份相关的东西,备份好说,备份完了就完了。

    但是恢复备份的时候,需要先让数据库脱机,然后恢复,然后再联机,嗯,问题就出在联机上了。

    根据 MSDN 的说法:https://msdn.microsoft.com/zh-cn/library/bb522682.aspx

    image

    OFFLINE 只需要拥有本数据库的 ALTER DATABASE 权限,但是 ONLINE 却需要拥有服务器级别的 ALTER ANY DATABASE 权限。

    感觉好坑的样子。。。

     

    那么服务器默认的几个角色里面,都谁有 ALTER ANY DATABASE 权限呢,为了看这个权限,又看了好多关系不是太大的东西。。。

    服务器级别角色:https://msdn.microsoft.com/zh-cn/library/ms188659.aspx

    数据库级别角色:https://msdn.microsoft.com/zh-cn/library/ms189121.aspx

    这两个网址里面描述的东西就是咱们平时为登陆用户分配权限时见到的几个默认角色的说明。

    image image

    有兴趣的话可以看看,其实主要是现在我还对数据库的权限分配要求不是很严谨,凑合能用就行,本来应该严格的为各个不同权限的用户分配角色权限的。

    image

    顺便还查了一下架构到底是什么东西,当然还是没有看太懂就是了,所以就先贴两个链接吧:

    SQL SERVER 2005/2008 中关于架构的理解(一):http://www.cnblogs.com/chillsrc/p/3383098.html

    SQL SERVER 2005/2008 中关于架构的理解(二):http://www.cnblogs.com/chillsrc/p/3389374.html

    感觉有点像程序里的命名空间一样,将数据库里的各个对象都放在不同的架构中,这样方便集中的管理和分配权限什么的,也可以顺便解决重名问题?(仅猜测,未验证)

     

    好吧,回到正题,来看看默认的这些角色到底都有啥权限?

    对于服务器角色:https://msdn.microsoft.com/zh-cn/library/ms179872.aspx

    DECLARE @TEMP TABLE(
        role NVARCHAR(128),
        permission NVARCHAR(128)
    )
    INSERT INTO @TEMP EXEC sp_srvrolepermission 
    SELECT * FROM @TEMP WHERE permission = 'alter database'

    嗯,还顺便学习了下怎么利用存储过程的结果。。。要用临时表存储

    image

    查到的结果呢,就这俩可以达到我们的要求。还有一个很遗憾的消息,这个方法将于未来被删除,但还没确定在哪个版本删,也不知道接班方法是谁,很坑。。。

    对于数据库角色:https://msdn.microsoft.com/zh-cn/library/ms188423.aspx

    这个没啥好看的就不看了。

    于是呢,这里为了解决联机的问题,把对应的数据库用户赋予dbcreator角色就好咯。。。折腾这么一大圈。。。

    (完)

  • 相关阅读:
    跨站请求伪造CSRF
    XSS危害——session劫持
    跨站脚本攻击XSS
    初识jsonp
    php json与xml序列化/反序列化
    php操作xml
    HTML5 WebStorage
    串口调试助手
    dashboard
    windows定时器编程
  • 原文地址:https://www.cnblogs.com/xwgli/p/4526431.html
Copyright © 2011-2022 走看看