Posted on 2006-03-24 10:06
..... 阅读(698)
评论(0) 编辑 收藏 引用 所属分类:
数据库
Sybase介绍和产品概述
Sybase数据库简介
1.1.1 版本
1984年,Mark B. Hiffman和Robert Epstern创建了Sybase公司,并在1987年推出了Sybase数据库产品。SYBASE主要有三种版本,一是UNIX操作系统下运行的版本,二是Novell Netware环境下运行的版本,三是Windows NT环境下运行的版本。对UNIX操作系统目前广泛应用的为SYBASE 10 及SYABSE 11 for SCO UNIX。
1.1.2 Sybase数据库的特点
(1)它是基于客户/服务器体系结构的数据库
一般的关系数据库都是基于主/从式的模型的。在主/从式的结构中,所有的应用都运行在一台机器上。用户只是通过终端发命令或简单地查看应用运行的结果。而在客户/服务器结构中,应用被分在了多台机器上运行。一台机器是另一个系统的客户,或是另外一些机器的服务器。这些机器通过局域网或广域网联接起来。
客户/服务器模型的好处是:
1)它支持共享资源且在多台设备间平衡负载
2)允许容纳多个主机的环境,充分利用了企业已有的各种系统
注释:什么是客户/服务器体系结构?
从硬件角度看,客户/服务器体系结构是指将某项任务在两台或多台机器之间进行分配,其中客户机(Client)用来运行提供用户接口和前端处理的应用程序,服务器机(Server)提供客户机使用的各种资源和服务。
从软件角度看,客户/服务器体系结构是把某项应用或软件系统按逻辑功能划分为客户软件部分和服务器软件部分。客户软件部分一般负责数据的表示和应用,处理用户界面,用以接收用户的数据处理请求并将之转换为对服务器的请求,要求服务器为其提供数据的存储和检索服务;服务器端软件负责接收客户端软件发来的请求并提供相应服务客户/服务器融合了大型机的强大功能和中央控制以及PC机的低成本和较好的处理平衡。客户/服务器为任务的集中/局部分布提供了一种新的方法,这种体系能够使用户对数据完整性、管理和安全性进行集中控制。在缓解网络交通和主机负荷以及满足用户需要方面,客户/服务器体系提供了良好的解决方案。
总之,客户/服务器的工作模式是:客户与服务器之间采用网络协议(如TCP/IP、IPX/SPX)进行连接和通讯,由客户端向服务器发出请求,服务器端响应请求,并进行相应服务。
(2) 它是真正开放的数据库
由于采用了客户/服务器结构,应用被分在了多台机器上运行。更进一步,运行在客户端的应用不必是Sybase公司的产品。对于一般的关系数据库,为了让其它语言编写的应用能够访问数据库,提供了预编译。Sybase数据库,不只是简单地提供了预编译,而且公开了应用程序接口DB-LIB,鼓励第三方编写DB-LIB接口。由于开放的客户DB-LIB允许在不同的平台使用完全相同的调用,因而使得访问DB-LIB的应用程序很容易从一个平台向另一个平台移植。
(3) 它是一种高性能的数据库
Sybase真正吸引人的地方还是它的高性能。体现在以下几方面:
1)可编程数据库
通过提供存储过程,创建了一个可编程数据库。存储过程允许用户编写自己的数据库子例程。这些子例程是经过预编译的,因此不必为每次调用都进行编译、优化、生成查询规划,因而查询速度要快得多。
2)事件驱动的触发器
触发器是一种特殊的存储过程。通过触发器可以启动另一个存储过程,从而确保数据库的完整性。
3)多线索化
Sybase数据库的体系结构的另一个创新之处就是多线索化。一般的数据库都依靠操作系统来管理与数据库的连接。当有多个用户连接时,系统的性能会大幅度下降。Sybase数据库不让操作系统来管理进程,把与数据库的连接当作自己的一部分来管理。此外,Sybase的数据库引擎还代替操作系统来管理一部分硬件资源,如端口、内存、硬盘,绕过了操作系统这一环节,提高了性能。
1.1.3 访问Sybase服务器的基本过程
1)建立客户与服务器之间的连接,包括网络连接、客户进程与服务器进程之间的连接;
2)客户端通过网络发送SQL语句给服务器,用来查询或操作服务器中的数据或数据库对象;
3)服务器接收到SQL语句后,对其进行语法分析、优化和编译后执行;
4)如果执行的语句产生一个结果集,服务器通过网络把结果集返回给客户;
5)客户端对收到的结果作相应的处理。
在客户/服务器体系,有两种数据库引擎结构,即多进程数据库引擎和单进程、多线程引擎结构。多进程结构即多个可执行程序同时运行。每当用户登录到数据库系统时实际上都启动了数据库引擎的一个独立实例。存在起协调作用的进程协调进行之间的通讯以保证当多用户访问相同数据时数据的完整性。多进程数据库引擎一般用在大型机数据库上。单进程多线程数据库引擎在原理上和多进程数据库引擎类似,不同的是多线程数据库引擎自己负责调度各应用程序占用CPU的时间,而不依赖于操作系统。这样,多线程数据库引擎自我保护的能力更强。
Sybase数据库管理系统采用的是单进程多线程的引擎结构。
1.2 Sybase产品概述
1.2.1 Sybase软件的组成
Sybase软件可划分为三个部分:
1)进行数据管理与维护的联机关系数据库管理系统Sybase SQL Server;
2)支持数据库应用系统的建立和开发的一组前端工具软件Sybase SQL Tools;
3) 把异构环境下其他厂商的应用软件和任何类型的数据连接在一起的接口软件Open Client/Open Server。
SQL Server是个可编程的数据库管理系统(DBMS),它是整个Sybase产品的核心软件,起着数据管理、高速缓冲区管理、事务管理的作用。
ISQL是与SQL Server进行交互的一种SQL句法分析器。ISQL接收用户发出的SQL语言,将其发送给SQL Server,并将结果以形式化的方式显示在用户的标准输出上。
DWB是数据工作台,是Sybase SQL Toolset的一个主要组成部分,它的作用在于使用户能够设置和管理SQL Server上的数据库,并且为用户提供一种对数据库的信息执行添加、更新和检索等操作的简便方法。在DWB中能完成ISQL的所有功能,且由于DWB是基于窗口和菜单的,因此操作比ISQL简单,是一种方便实用的数据库管理工具。
APT是Sybase客户软件部分的主要产品之一,也是从事实际应用开发的主要环境。APT工作台是用于建立应用程序的工具集,可以创建从非常简单到非常复杂的应用程序,它主要用于开发基于表格(form)的应用。其用户界面采用窗口和菜单驱动方式,通过一系列的选择完成表格(form)、菜单和处理的开发。
通过Open Client的DB-LIB库,应用程序可以访问SQL Server。而通过Open Server的SERVER-LIB,应用程序可以访问其它的数据库管理系统。
1.2.2 SQL Server的基本特征
SQL Server具有如下一些基本特征:
1)SQL Server可以放在若干个磁盘设备上,初始安装时所需的磁盘空间至少要17MB。
2)SQL Server支持多库结构,也就是说Sybase系统中可以有多个数据库。Sybase可以管理多个数据库。
3)SQL Server可以编译和运行T-SQL语句,并可返回客户程序所要求的结果。T-SQL语句是标准SQL的扩充,它除了有数据定义语句、数据操纵语句和数据控制语句之外,主要增加了流程控制语句。
4)SQL Server可以管理多个用户并具有较高的事务吞吐量和较低的事务响应时间。客户的应用程序可以存取Server中某一个或几个数据库的数据。
1.2.3 SQL Server的主要内容
Sybase SQL Server是一个多库结构的RDBMS,安装Sybase数据库时自动生成的系统数据库体系结构大致如下:
1)主数据库master;
2)模型数据库model;
3)系统过程数据库sybsystemprocs;
4)临时数据库tempdb。
也可选择下列数据库:
5)安全审核数据库sybsecurity;
6)示例数据库pubs2;
7)命令语法数据库sybsyntax
1.2.3.1 系统数据库
服务器自身所使用的数据库,也可以说是管理服务器和用户数据库的数据库。Sybase在安装时,自动创建了四个系统数据库:
master、model、tempdb、sybsystemprocs
(1) master数据库
它是管理和控制用户数据库以及维护服务器正常运行的核心数据库,它包含许多系统表和系统过程,从总体上控制用户数据库和SQL Server的操作,构成了SYBASE系统的数据字典,它保存了大量的系统信息,如服务器配置、用户、设备等。
在master数据库中不允许普通用户在其中创建数据库对象,否则会使得master数据库的事务日志很快变满。如果事务日志用尽,就无法使用dump transaction命令释放master数据库中的空间。
master数据库主要记录信息为:
1)登录帐号(SQL服务器用户名);syslogins,sysremolelogins
2)正在执行的过程;sysprocesses
3)可修改的环境变量;sysconfigures
4)系统错误信息;sysmessages
5)SQL服务器上每个数据库的信息;sysdatabases
6)每个数据库占用的存储空间;sysusages
7)系统上安装的磁带及磁带信息;sysdevices
8)活动锁信息;syslocks
(2)model数据库
它是为创建用户数据库而提供的模板。它提供了新用户数据库的初型。当我们每次用CREATE DATABASE命令时,SQL Server都产生一个model数据库的拷贝,以此作为新用户数据库,然后把它扩展到命令要求的尺寸。如果我们修改了model数据库,那么以后新创建的数据库都将随它而改变。
Model数据库中包含每个用户数据库所要求的系统表。Model数据库可以被修改以便定制新创建的。
下面是几个通常用到的对model数据库的改变:
增加用户数据库类型、规则或缺省;
可存取SQL Server上所有数据库的用户用sp_adduser增加到model数据库上;
缺省权限(特别是guest帐号)可在model中建立;
诸如select into/bulkcopy那样的数据库选项可在model中设置。这些设置反映到所有新创建的数据库中。它们在model中最原始的值是关(off)。
在一般情况下,大多数用户无权修改model数据库,也没被授权读取。因为model中所有内容已拷贝到新数据库中,授权读model没什么意义。
(3)tempdb数据库
它是个临时数据库,为服务器运行与处理提供一个共享的存储区域,如group by和order by的中间结果就存放在这里。Tempdb的空间为服务器中所有数据库的所有用户所共享。
每次重启SQL Server,服务器的一个自动进程都拷贝model数据库到tempdb数据库,并清除tempdb中原来的内容。因此tempdb中的用户表都是临时的。临时表分为两类:可共享的和不可共享的。不可共享的临时表在由create table中将符号#置于表名之前创立;可共享的临时表通过create table中指定表名前缀tempdb..而创立。不可共享的临时表SQL Server自动为其添加数字后缀名,且它只存在于当前会话中。
(4)sybsystemprocs数据库
它是专门用来保存系统命令(存储过程)的数据库,如sp_help、sp_configure、sp_helpdevice等。当任一数据库用户运行以sp_开头的存储过程时,SQL Server按照以下顺序查找:当前数据库、sybsystemprocs数据库、master数据库。
其他可选数据库:
(5)安全审核数据库sybsecurity
数据库中保存系统的安全审核信息,它可跟踪记录每个用户的操作情况,为维护系统安全提供控制手段。
(6)示例数据库pubs2
为用户提供一个学习SYBASE的数据库模型。
(7)命令语法数据库sybsyntax
库中保存SYBASE数据库的命令语法及支持的语言库。
1.2.3.2 用户数据库
用户数据库是我们使用Sybase服务器的真正目的。要管理用户数据,必须在Sybase中创建自己的数据库,是指用create database命令创建的数据库。所有新的用户数据库都要在master数据库中创建,也就是说,不能存取master数据库的用户是无权创建新的数据库的。SA可以将创建数据库的权限授予其他用户。新建数据库中存在一些系统表,在sysusers表中至少有一条记录,既该数据库的创建者。数据库创建时,创建者即为该数据库的 owner, 当然创建者可以将这一地位或这一所有权用系统过程授予别的用户。
数据库中的主要内容——数据库对象:表、视图、临时表、索引、主键、外键、缺省值、规则、存储过程、触发器等
2 Sybase基础知识
2.1 Sybase安装
安装建立SQL Server以后,要建立放置数据库、日志和索引的逻辑磁盘设备。数据库、日志和索引的配置应注意以下原则:
1)不要把任何用户对象安装在master数据库中。
2)日志应该保存在与数据库分离的磁盘上。
3)可以通过跨越多个设备分配工作优化I/O性能。
2.1.1 Sybase 的初始配置
需要做的内容:
1)更改sa的登录口令;
2)命名服务器;
3)修改文件名(保证Sybase Central正常启动);
4)更改缺省设备;
5)增加tempdb的空间。
6)创建用户数据库(创建数据库设备,设备大小以页(2K)为单位)
2.2 系统管理的主要内容
1)物理资源的管理
2)用户及其权限管理
3)数据库的备份与恢复
4)SQL Server的配置参数
服务器配置是系统管理员的职责,正确的配置对系统性能有重大的影响。有两个系统表存储配置信息:sysconfigures和syscurconfigs;sysconfigures是永久性的,一旦系统运行,sysconfigures的信息就拷贝到syscurconfigs中。显示配置和改变配置使用系统过程sp_configure。
有两种配置值:动态的和静态的,动态值一旦改变立即生效,静态值要在系统重启动后才起作用。
2.3 系统的启动和关闭
2.3.1 启动SQL Server
应用SQL Server安装程序(sybinit)创建SQL Server或Backup Server, 默认文件名为RUN_SYBASE 和RUN_SYB_BACKUP,放在$SYBASE/INSTALL目录下。Startserver 用来启动SQL Server 或Backup Server:
可以通过showserver查看SQL Server 和Backup Server是否已经启动。
SQL Server的启动过程 :master数据库启动 -- Sybsystemproces数据库启动 -- tempdb--model -- 用户数据库 。
启动SQL Server的单用户模式 :如果要恢复一已被损坏的master数据库,则必须要启动SQL Server的单用户模式。单用户模式下仅允许一个系统管理员向SQL Server注册。
Startserver -f RUN_SYBASE -m
2.3.2 关闭服务器
关闭SQL Server可以在isql中使用T-SQL命令:
关闭SQL备服务器 :shutdown SYB_BACKUP
关闭SQL主服务器 :shutdown [with nowait]
2.4 数据库设备与存储空间管理
初始安装SQL Server时,安装程序和脚本初始化主设备,并建立master、model、tempdb和sybsystemprocs数据库。系统数据库、预定义设备和段按下列默认方式组织:
1)master、model、tempdb数据库安装在主设备master上;
2)sybsystemprocs数据库安装在安装时选择的设备上(sysprocsdev);
3)为每个数据库创建三个预定义段:system、default和logsegment;
4)所有用户创建数据库的默认设备是master设备;
5)如果选择安装了审计数据库sybsecurity,它位于自己的设备上。
2.4.1 设备与存储管理考虑的主要问题
(1)恢复问题
物理磁盘崩溃时,磁盘镜像或在单独的物理设备上保存日志为数据库恢复提供了两种机制。
(2)性能问题
磁盘读写速度是I/O操作的瓶颈,正确地把数据库对象放置到物理设备上有利于改进性能;把日志和数据库对象置于单独的设备上可以提高系统性能;把表放在一个硬盘上而把索引放在另一个硬盘上,由于把工作分置于两个硬盘驱动器上,所以可以确保物理读写速度加快;磁盘镜像会降低磁盘写的速度。
2.4.2 设备(Device)
Sybase SQL Server是一个多库数据库系统。这些数据库包括系统数据库和用户数据库。 而不论是系统数据库还是用户数据库,都建立在数据库设备上。即Sybase将数据库中的所有数据存放在设备上。删除设备前必须删除其上的所有数据库,删除设备的命令是:sp_dropdevice。
2.4.2.1 设备的概念
设备是Sybase预先配置的专门存放数据库的一块连续的磁盘空间,并且它被映射到一操作系统文件或一原始磁盘分区上。即它不是指一个可识别的物理设备,而是指用于存储数据库和数据库对象的磁盘原始分区或操作系统文件。它有两个对应的名称:逻辑名和物理名。NT仅支持设备映射到文件。所有的数据库都创建在数据库设备上。增加一个新的数据库设备时,必须对这些设备“初始化”。初始化的过程就是将物理磁盘、磁盘分区或操作系统文件变为SYBASE数据库可以识别的设备。初始化数据库设备使用DISK INIT命令。
设备与数据库之间的关系:多对多关系。一个数据库可以被创建或扩充到多个设备上,一个设备也可以被用来存放多个数据库。不同的设备操作系统可以对其并行地读写,因此我们可以人为地将一个数据库放置到多个数据库设备上。
设备的分类:Database Device和Dump Device。数据库设备存放数据库和事务日志,转储设备用来存放数据库或日志的备份。
2.4.2.1.1 默认设备
在没有指定设备的情况下,用户创建的任何数据对象自动存放在默认设备上。初始安装后,系统的主设备master被预指定为默认设备,因此要尽快创建自己的默认设备。确保系统主设备安全,指定仅被日志使用的设备不是默认设备。
Sp_diskdefault 设备名[,DefaultOn|DefaultOff]
2.4.2.2 磁盘镜像
磁盘镜像是出于数据库安全性的考虑,当介质失败时,磁盘镜像能提供不间断恢复。磁盘镜像是磁盘上的数据的绝对拷贝。如果某一硬盘事故发生,则该被损坏的拷贝就自动变成离线状态,因而所有的读写都被引向未被损坏的拷贝。
Sybase的磁盘镜像是在设备级上进行的,因此磁盘镜像实质上是设备镜像。当对某一设备进行镜像操作时,Sybase自动创建一个附加设备,由镜像处理程序将原设备上的所有数据拷贝到镜像设备上。
如果要使某一数据库成为镜像,被分配给该数据库的每一设备都必须成镜像。Master设备在服务器中地位特殊,如果它损坏了,SQL Server将崩溃。因此,如果有可能总是要镜像Master设备(在另一磁盘上)。
2.4.3 创建与使用段
段(Segment)是数据库设备上磁盘空间的逻辑组合,它可以看作是指向一个或多个数据库设备的标签。利用段可以控制数据库对象的存放位置,可以将数据库对象分类存放到不同的段上。
设备与段之间的关系:多对多关系。一个设备上可以创建多个段,一个段也可以覆盖多个设备。
数据库设备从逻辑上被划分为数据库段以允许将某一特定的对象放置在指定的段上(创建对象时指定),一数据库设备可拥有多达192个段,一段可使用255个逻辑设备上的存储空间。当用户创建一个数据库时,SQL SERVER 会自动在该数据库中创建三个段: SYSTEM、LOGSEGMENT 、DEFAULT,这三个段分别用来存储数据库的系统表、事务日志和其他数据库对象
2.4.3.1 使用段的优点
1)控制空间的使用:放在一个段上的数据库对象不会在段外增长;
2)提高性能:处于不同磁盘设备上的段可以并行地读写;
3)处理大表:利用段,可以将一个大表分段放在独立的物理设备上,如将一个表的文本或图象数据存储另外的一个段上。
两个数据库放在同一设备的不同段上,它们不会相互影响;当数据库增加空间时,增加的空间会自动分配到它的每一个段上;
2.5 使用阈值管理
阈值(Threshold)管理是一种自动监控数据库自由空间的机制,Sybase的阈值管理允许用户为数据库的某个段上的自由空间设置阈值并定义相应的存储过程。当该段上的自由空间低于所置头阈值时,Sybase自动运行相应的存储过程。
在一个实际运行的数据库中,日志的增长速度一般要高于数据的增长,一旦日志段的自由空间用尽,SQL Server在默认情况下会挂起所有数据操纵事务,客户端应用程序停止执行。
在每个分离的段上存储其事务日志的数据库均自动设置有最后机会阈值(Last Chance Threshold),其阈值是备份事务日志所需的自由空间的估计值。当该段上的自由空间低于所置阈值时,Sybase自动运行名为sp_thresholdaction的存储过程。该过程的名称及参数由系统预定义,内容由用户编写。
2.6 数据库与事务日志
通常用户数据库由系统管理员创建,它的默认属主是dbo。系统过程sp_changeddbowner可改变数据库的属主关系,它必须由数据库管理员在要改变属主关系的数据库中执行。
日志文件是用来记录数据库每一次修改活动的文件。SQL Server中的每一个数据库都有自己的日志文件,即系统表syslogs,也称为事务日志。事务日志是撤消事务和出现故障时恢复事务的依据。在某些情况下,事务日志比数据本身更为重要。
数据库的修改是以事务为单位进行的。一个事务就是一个操作序列,这些操作要么全做,要么全不做,它是一个不可分割的工作单位。任何一个事务具备如下特征:
1)执行的原子性(Atomic);
2)保持数据的一致性(Consistency);
3)彼此的隔离性(Isolation);
4)作用的持久性(Durability);
上述事务的四个特征被称为事务的ACID准则。
事务在运行过程中,SQL Server把事务开始、事务结束以及对数据库的插入、删除和更新等每一个操作作为一个日志记录存放到事务日志中。事务中的更新操作首先在数据库缓冲区(内存)中进行,缓冲区分别有用来记录操作活动的数据页(data page)和日志页(log page)。当运行到commit tran时,日志页首先从缓冲区写到磁盘上,而后数据页从缓冲区写到磁盘上,即遵循“先写日志(write_ahead log)”的原则,这样保证出现故障的情况下,通过日志能够得到最大限度的恢复。恢复必须撤消发生故障时还未提交的事务,已完成的事务若仍有未从缓冲区写到数据库设备中,还要重新运行该事务。
2.7 数据库安全性与用户管理
数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。SQL Server的安全管理是一种基于角色(role)的管理方法,位于不同权限层次(或角色)的用户具有不同的用户权限。
规定用户权限有三个因素:用户、数据对象和操作,即什么用户在哪些数据对象上可以执行什么操作。
访问SQL Server中数据的四道屏障:
1)操作系统——操作系统登录
2)Sybase服务器——服务器登录
3)Sybase数据库——数据库用户登录
4)数据库对象——对象授权
2.7.1 用户管理概述
在SYBASE数据库中,用户管理是系统管理的一个重要组成部分,但其重要性却往往被人忽视。许多时候,操作数据库的命令不成功常与用户管理有关,而许多误操作命令的发生也可以通过用户管理来避免。因此,弄清用户管理的一些基本概念,对成功进行数据库系统管理有重要的作用。
2.7.1.1 SQL SERVER注册用户和数据库用户
刚接触到这两个概念的时候,可能会有所混淆,但只要了解SYBASE SQL SERVER的结构后,就会清楚。SYBASE SQL SERVER为一进程,进程本身可管理多个数据库。而有些数据库是相互独立的,有些数据库是可以共用的,如tempdb和sysbsystemprocs数据库。SQL SERVER与本身数据库的关系犹如城市与其中楼房的关系,当进入某一城市时需某一合法的身份,但进入城市的人并非每个楼房都可进入,即使允许进入也不能干某些事。SQL SERVER注册用户与数据库用户关系即是如此。当SQL SERVER创建注册用户后,该用户就能合法进SQL SERVER,该注册用户信息会放在master数据库中的 syslogins表中。但只有注册用户成为某一数据库用户,并且对该用户赋予某些权限时,该注册用户才能在限制条件下使用数据库中的表。
2.7.1.2 SQL SERVER数据库用户分类
在SQL SERVER中用户一般分为以下四种:
1)sa用户。
2)数据库属主
3)数据库对象属主。
4)数据库普通用户。
sa用户在SQL SERVER中为最高等级用户,SQL SERVER中所有命令都可执行。
数据库属主(dbo)用户可对本数据库中所有对象(如表、视图、存储过程等)进行操作,一般有三种途径创建:
a.为系统管理员的用户;
b.系统管理员的用户将创建数据库的权限赋予某个SQL SERVER中注册用户,由该用户进行数据库的创建后,自然形成数据库属主;
c.系统管理员的用户创建数据库后,将某个SQL SERVER中注册用户变为数据库的属主。
数据库对象属主为创建该对象的用户,在实际的数据库的管理中,一般为数据库属主。
数据库普通用户必须在数据库属主对本数据库中某些对象(如表、视图、进程等)赋予某些权限时,才可对本数据库中某些对象进行允许的操作。
几者的关系是相互包含的:系统管理员的用户在进入某个数据库后,自然成为该数据库的属主,数据库属主可看作为特殊的数据库普通用户。
2.7.2 别名(aliases)与组(group)
别名(aliases)与组(group)在数据库管理中是经常用到的,它能简化数据库用户管理,方便对用户的监控。
所谓别名(aliases)即将SQL SERVER中的注册用户以同一个数据库用户的身份来访问数据库,并具有与该用户相同的权限。也就是说,在数据库中只要建立一个数据库用户,对该数据库用户各种操作定义好,并使SQL SERVER 中已经定义好注册用户成为该数据库用户的别名用户后,即拥有与该用户相同的权限。这样一来,注册用户不必成为数据库的用户即可访问数据库,对所有别名用户的权限的控制只需通过对一个数据库用户的控制达到。如:有一SQL SERVER名为TEST.SER,有一名为EXAMPLE的数据库,其中有一名为OK的表,当系统管理员为TEST.SER创建名为JOHN和KATE的注册用户,EXAMPLE的数据库中有一名为OK_SELECT的数据库用户,该数据库用户有对OK表的查询权限。将JOHN和KATE这两个注册用户变为OK_SELECT的别名后,JOHN和KATE即可进入数据库,并拥有与OK_SELECT的数据库用户相同的权限。
组(group)为数据库用户的集合,即通过对组(group)的权限的控制达到对该组中数据库用户的控制,但也可对该组中数据库某些用户进行格外的权限控制。在上例中的EXAMPLE的数据库中有一OK_INSERT的组,它对OK的表有插入的权限,数据库中有两个用户:MARRY和KITY,当这两个用户加入到OK_INSERT组后,MARRY和KITY就有对OK表的插入的权限。对MARRY和KITY相同的权限操作可通过对OK_SELECT组的控制可得。而使MARRY对OK表有查询权限,仅对MARRY用户赋权即可。而别名则不行。
2.7.3 SYBASE SQL SERVER的角色
一般在管理分工较细的数据库系统中,sa用户往往被分为三种角色:系统管理员角色(SA role)、系统安全员角色(SSO role)和操作员角色(OPER role)。
sa用户往往被锁住,其权力被以上三种角色所瓜分。这三种角色将分别用不同的数据库注册用户承担。
角色是权限的集合。系统预定义角色: 一个真正的数据库管理员应该是整个服务器及其数据库的拥有者,具有管理服务器及其数据库的所有权限。在一个大的系统中,数据库管理员往往不只由一人承担,而是将管理任务进行功能划分,每人提当不同的责任。系统预定义角色就是为适应这种要求而设计的。
1)系统管理员(sa_role)
sa_role角色拥有执行与数据库具体应用无关的管理权限:
a.安装与更新SQL Server
b.管理服务器的物理存储
c.配置系统设置参数;
d.创建用户数据库;
e.授予SQL Server用户权限
┅┅
2)系统安全管理员(sso_role)
a.sso_role用来实施安全上敏感的操作,执行有关安全性的任务:
b.建立服务器登录帐户;
c.管理口令;
d.授予除sa_role之外的任何角色;
e.管理审计系统;
┅┅
3)操作员(oper_role)
a.oper_role执行全服务器范围的数据库操作,如备份与恢复任意数据库等:
b.转储数据库与日志
c.转载数据库与日志
┅┅
2.8 数据库的备份与恢复
数据库的备份与恢复是SQL Server保障数据安全的一种重要手段,为防止意外,数据库管理员必须定期和经常制作数据库的备份。一旦系统出现故障,数据能够得到及时的恢复。
2.8.1 基本概念
(1)事务处理及其日志
SQL Server使用事务来跟踪所有数据库变化。事务是SQL Server的工作单元。一个事务包含一条或多条作为整体成功或失败的T_SQL语句。每个数据库都有自己的事务日志,即系统表syslogs,事务日志自动记录每个用户发出的每个事务,它影射了每个事务足够多的信息,以确保数据能够被恢复。
(2)检查点(CheckPoint)
服务器在检查点发生时更新数据。在服务器发出一个检查点时:
1)更新数据。
2)在日志中记录下执行检查点的标记。
检查点可把所有“脏页”写到数据库设备上,“脏页”是指从上一次检查点以来,在内存中修改、但没有在磁盘上修改的页。SQL Server的自动检查点机制保证了被完成的事务修改的数据页有规律地从内存中的缓冲区写到数据库设备上。
2.8.2 数据库备份
若硬件介质出现故障(如磁盘损坏),当且仅当事先已对数据库及其事务日志作了备份,才能恢复数据库。
注意:绝对不要使用操作系统的拷贝数据库设备,把这样一个拷贝装入SQL Server将导致大量数据库受损。
备份的类型:
1)完全备份
2)增量备份——备份事务处理日志
说明:
a.只有把事务日志放在单独的设备上,才能进行增量备份;
b.备份事务日志会截断日志,因此备份的内容是自上次备份以来的事务处理。
c.备份之前要启动备份服务器,并最好创建转储设备。
备注:truncate_only与no_log选项用于删除事务处理而不作拷贝。Truncate_only截断日志;在事务处理日志完全满时用no_log,它不为数据库建立检查点。两个选项都会丢掉日志。当使用了这两个参数后,应及时备份整个数据库。no_truncate拷贝日志但不截断日志,在出现介质错误时使用该选项。
2.8.3 数据库的恢复
使用load database加载备份到现有数据库,数据库可以是用于创建转储的数据库,也可以不是。
由于事务日志在恢复数据库中的特殊作用,应定期备份数据库及其事务日志,而且事务日志的备份要更频繁一些。如:数据库每周备份一次,事务日志每天备份一次。
SQL Server提供了两种不同类型的恢复:一类是系统自动完成的恢复;另一类是人工完成的恢复。
1)系统自动恢复
系统自动恢复是在系统软件出现故障的情况下通过重新启动SQL Server进行恢复。
自动恢复从master数据库开始,然后是model数据库,再是temporary数据库,最后是用户数据库。在每个数据库上,恢复机制观察事务日志。如果日志写入比数据库更近的数据,则向前恢复数据库。如果事务尚未完成,则要回退它们。
2)介质故障的恢复
一旦介质发生故障,只有通过以前备份的数据库和事务日志才能恢复数据库,为此我们需要经常备份数据库和事务日志。备份数据库和事务日志我们使用dump命令,而恢复数据库和事务日志我们使用load命令。
与创建数据库需要一个数据库设备类似,我们备份数据库和事务日志也需要一个卸出设备。增加卸出设备可以通过系统过程sp_addumpdevice来实现。卸出设备可以是磁盘、磁带或操作系统文件。
在备份数据库前的所有事务日志备份都是没有意义的。我们一般不经常备份数据库,但我们要经常备份事务日志。这是因为备份事务日志比备份数据库需要更少的时间和存储空间。
3)恢复用户数据库
要恢复已被破坏的数据库,可以按如下步骤进行:
a.用带no_truncate选项的dump命令卸出用户数据库事务日志。
b.用和被破坏的数据库的同样的结构建立一个新的数据库。
c.用load命令重新装入数据库和事务日志。
2.9 数据库与T-SQL语言
关系数据库以关系模型为基础,它由以下三部分组成:
1)数据结构——模型所操作的对象、类型的集合
2)完整性规则——保证数据有效、正确的约束条件
3)数据操作——对模型对象所允许执行的操作方式
关系(Relation)是一个由行和列组成的二维表格,表中的每一行是一条记录(Record),每一列是记录的一个字段(Field)。表中的每一条记录必须是互斥的,字段的值必须具有原子性。
2.9.1 SQL语言概述
SQL(结构化查询语言)是关系数据库语言的一种国际标准,它是一种非过程化的语言。通过编写SQL,我们可以实现对关系数据库的全部操作。
1)数据定义语言(DDL)——建立和管理数据库对象
2)数据操纵语言(DML)——用来查询与更新数据
3)数据控制语言(DCL)——控制数据的安全性
T-SQL语言是Sybase对SQL92标准的一种扩展,主要在它的基础上增加了三个方面的功能:自己的数据类型/特有的SQL函数/流程控制功能。
T-SQL中的标识符使用说明:标识符由1-30个字符或数字构成,但首字符必须为字母。临时表的表名以#开头,长度不能超过13个字符。