关于 sql server 数据库权限乱七八糟的一些东西

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

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

根据 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角色就好咯。。。折腾这么一大圈。。。

(完)

时间: 2024-10-16 03:27:06

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

SQL Server 数据库权限设置

一.登录权限:SQL server的身份验证模式有以下两种: 1. Windows身份验证模式: 当使用Windows身份验证时,SQL server会使用操作系统中的Windows用户和密码.也就是说,当用户身份由Windows进行验证,SQL server不要求提供密码,也不执行身份验证.Windows身份验证是比SQL server身份验证更为安全的,可以保护SQL server免受大部分来自Internet的 攻 击.Windows身份验证适合用于在局域网内部(如AD域)访问数据库的情况

SQL SERVER数据库权限

在数据库开发中,经常要设置用户对数据库的操作权限,通常有以下2种办法: 1.在数据库中,建立一个权限表,记录每个用户对相应模块(界面)的操作权限,然后在程序中使用. 我看到的一些公司的数据库开发(用友也是这样实现)就用这种方式. 2.直接在SQL SERVER中建立数据库用户,配置每个用户对数据表的操作权限. 在这里我主要讲述第2种方式,可能使用到的SQL语句,直接配置数据表的权限,然后通过SQL语句返回用户对表的操作权限,可以在应用程序中使用. select * from sys.sysuse

SQL SERVER数据库权限分配

1,新建 只能访问某一个表的只读用户. --添加只允许访问指定表的用户:         exec     sp_addlogin     '用户名','密码','默认数据库名'               --添加到数据库         exec     sp_grantdbaccess     '用户名'           --分配SELECT整表权限         GRANT     SELECT     ON  表名  TO   [用户名]         --分配SELECT权限

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

---数据库的安全管理 --登录:SQL Server数据库服务器登录的身份验证模式:1)Windows身份验证.2)Windows和SQL Server混合验证 --角色:分类:1)服务器角色.服务器角色是固定的服务器功能,用户不能创建和修改服务器角色.可以将服务器的登录账号添加服务器角色中,使其具备服务器角色的权限.2)数据库角色.数据库角色的作用对象是某一个数据库,用来将登录数据库的用户添加到数据库角色中,使其具备数据库角色的功能. --数据库角色包括固定数据库角色.标准数据库角色和应用程

你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)

前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的一些问题和解决方法,可点击查看,我们此篇主要介绍的是SQL Server启动过程中关于用户数据库加载的流程,并且根据加载过程中所遇到的一系列问题提供解决方案. 其实SQL Server作为微软的一款优秀RDBMS,它启动的过程中,本身所带的那些系统库发生问题的情况相对还是很少的,我们在平常使用中,出问题的大部分集中于我们自己建立的用户数据库. 而且,相对于侧重面而言,其实我们更关注的是我们自己建立的用户数

SQL Server数据库学习总结

经过一段时间的学习,也对数据库有了一些认识,数据库基本是由表,关系,操作组成:对于初学者首先要学的 一图胜"十"言:SQL Server 数据库总结 一个大概的总结 经过一段时间的学习,也对数据库有了一些认识.  数据库基本是由表,关系,操作组成:对于初学者首先要学的:  1.数据库是如何存储数据的  表,约束,触发器  2.数据库是如何操作数据的  insert,update,delete T-sql 函数 存储过程 触发器  3.数据库是如何显示数据的  select SQLSer

sql server数据库中raiserror函数的用法

server数据库中raiserror的作用就和asp.NET中的throw new Exception一样,用于抛出一个异常或错误.这个错误可以被程序捕捉到. raiserror的常用格式如下:raiserror('错误的描述',错误的严重级别代码,错误的标识,错误的描述中的参数的值(这个可以是多个),一些其它参数),在官方上的格式描述如下: RAISERROR ( { msg_id | msg_str | @local_variable } { ,severity ,state } [ ,a

SQL Server数据库附加失败:错误5120和错误950

再次敲机房,想参考以前的物理模型,结果在附加数据库这一环节出现了点问题,下面总结一下. 1.附加数据库失败,错误5120 对于这种错误,我在网上搜集了一下,主要有以下几种解决办法: 方法一:将要附加的文件拷贝到SQL Server默认的Data目录,即C:\ProgramFiles\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA,此时附加就会成功. 方法二:在登陆验证时,选择"Windows身份验证",而不是"SQL S

SQL Server数据库表重置自增主键号(通常是指ID)

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86