原创链接:https://www.cnblogs.com/junfly/articles/2798023.html

SQL SERVER 基础教程中关于服务器登录名、服务器角色、数据库用户、数据库角色、架构的关系。

我们要说的包括服务器登录名Server Login,服务器角色Server Role,数据库用户DB User,数据库架构DB Schema,数据库角色DB Role 。以上几个名词应该从服务器与数据库来区分,服务器包含一到多个数据库,其中:

服务器登录名,指有权限登录到某服务器的用户;

服务器角色,指一组固定的服务器用户,默认有9组;

  • 登录名一定属于某些角色,默认为public
  • 服务器角色不容许更改
  • 登录后也不一定有权限操作数据库

数据库用户,指有权限能操作数据库的用户;

数据库角色,指一组固定的有某些权限的数据库角色;

数据库架构,指数据库对象的容器;

  • 数据库用户对应于服务器登录名以便登录者可以操作数据库
  • 数据库角色可以添加,可以定制不同权限  
  • 数据库架构,类似于数据库对象的命名空间,用户通过架构访问数据库对象

而通过下图可以让这些概念清晰一些:

    

即:

  1. 服务器登录名属于某组服务器角色;
  2. 服务器登录名需要于数据库的用户映射后才拥有操作数据库的权限
  3. 数据库用户属于某组数据库角色以获取操作数据库的权限
  4. 数据库角色拥有对应的数据库架构,数据库用户可以通过角色直接拥有架构
  5. 数据库用户有默认架构,写SQL语句可以直接以“对象名”访问
  6. 非默认架构则要以“架构名.对象名”访问

因此,新建一个非SA账户并建立数据库的过程可以如下:

1、新建登录名Login1

2、新建数据库DB1

3、新建DB1的架构Schema1

使用 SQL Server Management Studio 创建架构

  1. 在 SQL Server Management Studio 中,打开对象资源管理器,然后展开“数据库”文件夹。

  2. 展开要在其中创建新数据库架构的数据库。

  3. 右键单击“安全性”文件夹,指向“新建”,然后单击“架构”。

  4. 在“常规”页上的“架构名称”框中输入新架构的名称。

  5. 在“架构所有者”框中,输入要拥有该架构的数据库用户或角色的名称。

  6. 单击“确定”。

4、新建BD1的用户User1,登录名对应Login1,默认架构选择Schema1,角色选择db_owner

使用 SQL Server Management Studio 创建用户

  1. 在 SQL Server Management Studio 中,打开对象资源管理器,然后展开“数据库”文件夹。

  2. 展开要在其中创建新数据库架构的数据库。

  3. 右键单击“安全性”文件夹,指向“新建”,然后单击“用户”。

  4. 在“常规”页上的“用户名”框中输入”用户名“。

  5. 选择登录名 如下图
  6. 选择默认的建构 如下图
  7. 单击“确定”。

5、在登录名Login1的属性窗口里选择“用户映射”,勾选DB1,在用户里填写User1,默认架构选择"Schema1"

6、至此,新建表名会是Schema1.Table1,其他对象也如此

7、当然还可以新建其他架构的对象Schema2,只有User1拥有该架构,一样可以访问,如Schema2.Table2

值得注意的是,当为登录映射数据库用户的时候,多个数据库可以有相同名称的用户,而单独为某个数据库新建的用户,如User1,则在其他数据库里不允许同名。

SQL SERVER服务器登录名、角色、数据库用户、角色、架构的关系的更多相关文章

  1. SQL Server客户端登录名与数据库用户关联

    数据库迁移之后,在新的SQL Server客户端工具设置关联时,往往会报错: 用户.组或角色 'XXX' 在当前数据库中已存在. 解决方法: 首先介绍一下sql server中“登录”与“用户”的区别 ...

  2. Chapter 2 User Authentication, Authorization, and Security(8):创建映射到登录名的数据库用户

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/38944121,专题目录:http://blog.csdn.net/dba_huangzj ...

  3. SQl Server 中登录名 、用户、角色、概念一览

      转载:http://www.2cto.com/database/201306/216922.html       数据库,角色,用户,安全        登录SQL server 2008可以用w ...

  4. SQL Server新建登录名,实现SQL Server身份验证模式

    一.如果是默认安装,没有选择SQL Server和Windows身份验证模式,需要重新设置. 1.右击服务器,属性,常规项中点选“SQL Server和Windows身份验证模式” 2.点击“确定”按 ...

  5. SQL SERVER 2008 服务器登录名、角色、数据库用户、角色、架构的关系

    sql server登录名.服务器角色.数据库用户.数据库角色.架构区别联系 1.一个数据库用户可以对应多个架构(架构是表容器).架构里面包含的是数据库表. 2.一个数据库角色有可能涉及多个架构.数据 ...

  6. MS-SQL2005服务器登录名、角色、数据库用户、角色、架构的关系

    MS SQL2005对2000进行了很大的改进,而用户关系这部分也变得相当复杂了,很多朋友都对此一知半解!下面,我将把我应用中总结的和大家分享下,先从概念入手,希望对不理解的朋友有点提示. 今天我们要 ...

  7. SQL Server服务器角色和数据库角色描述

    服务器角色 bulkadmin 这个角色可以运行BULK INSERT语句.该语句允许从文本文件中将数据导入到SQL Server2008数据库中,为需要执行大容量插入到数据库的域帐号而设计. dbc ...

  8. SQL Server 2008 错误15023:当前数据库中已存在用户或角色

    解决SQL Server 2008 错误15023:当前数据库中已存在用户或角色,SQLServer2008,错误15023,在使用SQL Server 2008时,我们经常会遇到一个情况:需要把一台 ...

  9. java桥连接sql server之登录验证及对数据库增删改查

    一:步骤 1.sql server建立数据库和相关表 2.建立数据源  (1).打开控制面板找到管理,打开ODBC选项或直接搜索数据源  (2).打开数据源配置后点击添加,选择sql server点击 ...

随机推荐

  1. Window10上安装Redis及其客户端

    资源下载地址 Redis安装包:https://github.com/MicrosoftArchive/redis/releases Redis客户端: 链接:https://pan.baidu.co ...

  2. git tag 打标签

    注意:在哪个分支上打tag一定要先提交该分支到远程gitlab仓库 标签(tag)操作 1. 查看所有标签 git tag 默认标签是打在最新提交的commit上的 2.本地打新标签 git tag ...

  3. 好的RESTful API的设计原则

    转载自一位大佬 英文原版 Principles of good RESTful API Design Good API design is hard! An API represents a cont ...

  4. Spire.XLS,生成Excel文件、加载Excel文件

    一.组件介绍 Spire.XLS是E-iceblue开发的一套基于企业级的专业Office文档处理的组件之一,全称Spire.Office for .NET.旗下有Spire.Doc,Spire XL ...

  5. 消息队列比较-rabbitmq/kafka/rocketmq/ONS

    主要是比较这几种队列中间件: rabbitmq kafka rocketmq ONS 分以下几个维度来比较 高并发 毫无疑问KAFKA发消息的速度是最快的 ROCKETMQ/ONS次之 rabbitm ...

  6. Linux系统下Mysql安装与配置

    一,使用系统 Centos7: 在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB. 二,下载安装 ...

  7. (light oj 1102) Problem Makes Problem (组合数 + 乘法逆元)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1102 As I am fond of making easier problems, ...

  8. CodeForces Round #554 Div.2

    A. Neko Finds Grapes 代码: #include <bits/stdc++.h> using namespace std; ; int N, M; int a[maxn] ...

  9. JS confirm或alert对话框中的换行

    如题. alert.confirm对话框的换行可以使用回车符或换行符:\n,\r 也可以使用回车符或换行符对应的unicode编码:\u000a,\u000d,这是等效的. //确认信息 var co ...

  10. MSMQ 和 MQTT

    MSMQ MicroSoft Message Queuing(微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间中的任 ...