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

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

根据 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. 数组排序 -- 结合sort和函数排序

    结合sort和函数排序: 数组由小到大进行排序:sort,sortnum; var arr = [3,43,23,45,65,90]; function sortnum(a,b){ return a- ...

  2. powx-n 分治实现乘方

    题目描述 Implement pow(x, n). AC: class Solution { public: double pow(double x, int n) { && n == ...

  3. 从join on和where执行顺序认识T-SQL查询处理执行顺序

    先从一例子看join on 和 where执行结果的不同 CREATE TABLE "SCOTT"."A" ( "PERSON_ID" ) ...

  4. Oracle SQLPLUS提示符设置

    Oracle SQLPLUS提示符设置 把Oracle sqlplus提示符修改为如下,可以提醒你所在的用户模式,减少误操作. set sqlprompt _user'@'_connect_ident ...

  5. python之函数用法get()

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python之函数用法get() #http://www.runoob.com/python/att-dic ...

  6. PMI网站中pdu查询

    1.PMI官网:http://www.pmi.org/ 2.登录--->点击“myPMI”-->右侧“CERTIFICATION STATUS”(国外网站常常加载慢  会加载不出来就不显示 ...

  7. 【note】EtherCAT Configurator 使用之主菜单介绍

    EtherCAT配置器是一个工具,用于配置EtherCAT总线. 工具管理一个或多个EtherCAT主设备和连接到该主站的EtherCAT从站.配置的设备能够脱机或能够通过扫描EtherCAT现场总线 ...

  8. javascript基础 思维导图2

    来源于:http://www.cnblogs.com/xianyulaodi/p/5886128.html 1.javascript数据类型 2.javascript数组 3.javascript运算 ...

  9. Android 代码画角标 offcutView

      效果如下:          代码: <com.andye.OffcutView android:layout_width="30dp" android:layout_h ...

  10. 向Kubernetes集群删除Node

    Kubernetes集群中移除Node在master节点上执行: kubectl drain swarm1 --delete-local-data --force --ignore-daemonset ...