二、SQL Server功能简介
在前面安装配置过程中,我们已经接触到一些SQL Server数据库的概念,其中有些概念与其它数据库有所区别。下面着重解释一下数据库软件、实例和数据库的关系。
(1) 数据库软件
也就是数据库软件的一个拷贝,包括软件安装的二进制可执行文件和其他文件。
可以在单台机器上安装多个 SQL Server 产品。比如2008和2005版本。
(2) 实例
实例 (instance)有2个含义。 1.计算机上运行的 SQL Server 副本。2.报表项(例如报表部件、子报表、动态成员或组)的特定副本。我们在安装过程中指定的MSSQLSERVER和就是数据库默认实例名。SQL Server的命名实例,该实例通过计算机的网络名称加上实例名称以<计算机名称>\<实例名称>格式进行标识。SQL Server可以在同一计算机上创建并同时运行多个关系数据库实例,但是需要用不同的监听端口访问。每个实例有其独立的系统和用户数据库集合。应用程序采用与连接不同计算机上的 SQL Server 实例大致相同的方式连接同一计算机上的各个实例。在同时运行较早版本的SQL Server的计算机上,无法安装SQL Server 2008 R2的默认实例。必须将以前版本的SQL Server安装升级到SQL Server 2008 R2默认实例,或者保留以前版本SQL Server的默认实例并安装SQL Server 2008 R2的命名实例。每个命名实例都由非重复的一组服务组成,并且对于排序规则和其他选项可以有完全不同的设置。目录结构、注册表结构和服务名称都反映了所指定的具体实例名称。
(3) 数据库
数据库 (database)是为特定目的(例如搜索、排序和重新组合数据)而组织和表示的信息、表和其他对象的集合。
数据库在实例中创建,同一实例中的数据库,只要具有访问的权限,可以不受限制地互相访问。
从上边的描述可知,一个系统可以包括多个SQL Server软件副本,每个副本可以包括多个实例,但多个副本的实例只能有1个默认实例。每个实例可以有多个数据库,通过指定实例名,可以访问某个副本的某个实例下的不同数据库。
在我们的主测试环境中,目前只有一个SQL Server数据库软件,创建了一个默认实例,实例中创建了默认的系统数据库master,tempdb等数据库。后面的测试中还会创建测试专用的数据库。
(4) 用户和架构(Schema)
SQL Server的用户和登录模式相关,在信任登录模式就是利用操作系统下验证的用户登录。不需要提供用户名和口令。而如果利用sa或其他SQL Server的登录名连接到实例,那么需要输入用户名和口令。登录名(login)和数据库中的用户(user)关联,但只能对数据库的用户进行对象权限或系统权限的授权。
Msdn文档中写到“数据库架构 (database schema)数据库的表、字段、数据类型以及主键和外键的名称。”这个叙述不是太清晰,更好的表述是:架构(schema)是用于在数据库中创建的数据库对象的一个高级限定符。它是数据库对象,例如表、视图、索引或触发器的一个集合。它提供了数据库对象的一个逻辑分类。在创建对象时,可以使用架构将这些对象进行分组。一个对象只能属于一种架构。使用 CREATE SCHEMA 语句来创建架构。有关架构的信息保存在连接的数据库的系统目录表中。架构是用来组织数据库中对象的一种方式,可以把它理解为目录。所有同一个目录下的内容属于一个架构,要访问某个对象,就需要同时指定架构名和对象名。若用户设定了默认架构,那么用该用户对应的登录名访问时,此架构下的所有对象可以不带架构名访问。
从 SQL Server 2005 开始,架构的行为发生了更改。架构不再等效于数据库用户;现在,每个架构都是独立于创建它的数据库用户存在的不同命名空间。也就是说,架构只是对象的容器。任何用户都可以拥有架构,并且架构所有权可以转移。每个用户都拥有一个默认架构。可以使用 CREATE USER 或 ALTER USER 的 DEFAULT_SCHEMA 选项设置和更改默认架构。如果未定义 DEFAULT_SCHEMA,则数据库用户将使用 dbo 作为默认架构。
作为 CREATE SCHEMA 语句的一部分创建的任何对象的定义者是架构所有者。此所有者可以授予和撤销其他用户的架构权限。
▲图13数据库引擎权限层次结构之间的关系
从上图可以看出各种对象的层次关系。
下面用一个例子解释登录名、用户、数据库、架构、对象之间的关系。
创建一个登录名,也就是SQL Server的一个用户。


















