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

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

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

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

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

 

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

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

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'

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

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

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

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

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

(完)

关于 sql server 数据库权限乱七八糟的一些东西的更多相关文章

  1. SQL SERVER数据库权限分配

    1,新建 只能访问某一个表的只读用户. --添加只允许访问指定表的用户:         exec     sp_addlogin     '用户名','密码','默认数据库名'           ...

  2. SQL Server 数据库的安全管理(登录、角色、权限)

    ---数据库的安全管理 --登录:SQL Server数据库服务器登录的身份验证模式:1)Windows身份验证.2)Windows和SQL Server混合验证 --角色:分类:1)服务器角色.服务 ...

  3. SQL语句操作SQL SERVER数据库登录名、用户及权限

    要想成功访问 SQL Server 数据库中的数据, 我们需要两个方面的授权: 获得准许连接 SQL Server 服务器的权利: 获得访问特定数据库中数据的权利(select, update, de ...

  4. NetBeans连接SQL server数据库教程

    不废话,直接开始 1.下载sqljdbc.jar 可以从微软中国官方网站下载 SQLJDBC微软中国 笔者提供一个网盘链接Sqljdbc.jar 4个压缩包视版本选择,SQL 2012 用sqljdb ...

  5. SQL SERVER 数据库备份的三种策略及语句

    1.全量数据备份    备份整个数据库,恢复时恢复所有.优点是简单,缺点是数据量太大,非常耗时 全数据库备份因为容易实施,被许多系统优先采用.在一天或一周中预定的时间进行全数据库备份使你不用动什么脑筋 ...

  6. 5、SQL Server数据库、T-SQL

    SQL Server数据库基础 一.安装SQL Server数据库 setup.exe->安装->全新SQL Server独立安装或向现有安装添加功能->输入序列号->下一步- ...

  7. C# 以附加文件方式连接SQL Server数据库文件

    string str = @"data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFileName=z:\ttt.mdf;Us ...

  8. 人人都是 DBA(V)SQL Server 数据库文件

    SQL Server 数据库安装后会包含 4 个默认系统数据库:master, model, msdb, tempdb. SELECT [name] ,database_id ,suser_sname ...

  9. SQL Server - 数据库初识

      在互联网笔试中,常遇到数据库的问题,遂来简单总结,注意,以 Sql Server 数据库为例. 数据库 数据库系统,Database System,由数据库和数据库管理系统组成. 数据库,Data ...

随机推荐

  1. JS密码校验规则前台验证(不能连续字符(如123、abc)连续3位或3位以上)(不能相同字符(如111、aaa)连续3位或3位以上)

    密码必须为8到16位且必须包含数字和字母 密码必须包含特殊字符[_&#%] 不能连续字符(如123.abc)连续3位或3位以上 不能相同字符(如111.aaa)连续3位或3位以上 /** * ...

  2. HDU 4585 平衡树Treap

    点击打开链接 题意:给出n组数,第一个数是id.第二个数是级别.每输入一个.输出这个人和哪个人打架,这个人会找和他级别最相近的人打,假设有两个人级别和他相差的一样多,他就会选择级别比他小的打架. 思路 ...

  3. C++11新特性之 std::forward(完美转发)(转)

    我们也要时刻清醒,有时候右值会转为左值,左值会转为右值. (也许“转换”二字用的不是很准确) 如果我们要避免这种转换呢? 我们需要一种方法能按照参数原来的类型转发到另一个函数中,这才完美,我们称之为完 ...

  4. oracle 拼接字符串的两种方式

      方式一:使用管道符||进行拼接 方式二:使用concat()函数 区别: 方式一可以拼接多个字符串:方式二只能将2个字符串拼接到一起. 写在最后 哪位大佬如若发现文章存在纰漏之处或需要补充更多内容 ...

  5. jQuery live事件说明及移除live事件方法

    1.live事件说明 jQuery1.3增加了一个live()方法,下面是手册上的说明: jQuery 1.3中新增的方法.给所有当前以及将来会匹配的元素绑定一个事件处理函数(比如click事件).也 ...

  6. .NET网址

    1.爱整理:http://www.aizhengli.com/

  7. U盘安装win10

    1. 下载win10的安装ISO, 这里使用的是 LENOVO_Win10_multiple_editions_x64_zh-cn_DV5.iso 2. 准备一个大小不低于8G的U盘, 因为ISO文件 ...

  8. CentOS安装Mysql5.6并配置远程连接

    使用的是阿里云提供的CentOS7.3版本,安装的是mysql5.6.40版本.此次安装采用解压压缩包并配置的方式. 1. 卸载自带的Mariadb Centos7将默认数据库mysql替换成了Mar ...

  9. 使用gprof对应用程序做性能评测

    1,包含头文件gperftools/profiler.h 2,代码结构如下: int main() { // codes ProfilerStart("./profile"); / ...

  10. 如何打开Intellij IDEA的代码提示功能/联想/自动联想

    1.默认情况下,我们输入代码时IDEA会自动弹出代码提示框,这时候是不用按快捷键的,直接使用方向键选择我们需要的条目就可以了. 2:如果我们想主动 使用代码提示时,默认的快捷键是CTRL+空格,但是中 ...