第四章 数据库管理和使用.

Slides:



Advertisements
Similar presentations
第二章 简单的 SQL 语句. 本章要点  创建一个简单的表  SQL 语句介绍  最简单的查询语句 select  带有限制条件的查询  查询结果的排序显示.
Advertisements

数据库系统原理 数据库系统概论 SQL Server 数据库系统原理 3.1 SQL Server 2000 特性 Microsoft SQL Server 2000 的特性包括: 真正的客户机 / 服务器体系结构。 图形化用户界面。 丰富的编程接口工具。 SQL Server 与 Windows.
数据库原理与应用教程 ―SQL Server
第15章 备份与恢复数据库 日志文件 基本概念 恢复数据库的基本原理 数据库故障的种类 备份数据库 备份的内容和时间 备份的一般方法
第2讲 Transact-SQL语言.
第5章 索引及视图操作 数据库原理应用与实践 SQL SERver2014(第2版) 主编 贾铁军 科学出版社 编著 陈国秦 万程 邢一鸣
数据库技术及应用 ——SQL Server 任课教师: 毕丛娣 电话: 年3月.
第14章 預存程序 14-1 預存程序的基礎 14-2 建立與執行預存程序 14-3 預存程序的參數傳遞 14-4 預存程序的傳回值
第十三章 SQL Server的安全管理.
資料庫 (Database) SQL Server 2008實作
第3章 SQL的基础知识 数据库管理及应用 3.1 SQL简介 3.2 SQL的数据模型 3.3 标识符 3.4 使用SQL语句管理数据库
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
Chap 13 視界與資料庫程式設計.
第三章 Management Studio.
第6章 資料庫管理系統 6-1 關聯式資料庫管理系統 6-2 SQL Server資料庫管理系統
创建数据库 MySql创建数据库的语法: CREATE DATABASE 数据库名; 例: CREATE DATABASE mydb;
数据库原理与SQL Server 第9章 保证数据完整性.
第7章 建立資料表與完整性限制條件 7-1 資料型別 7-2 資料表的建立 7-3 建立完整性限制條件 7-4 修改與刪除資料表
第五讲 利用视图进行查询优化.
第 2 章 SQL Server 2008 R2資料庫安裝設定與管理
国家“十一五”规划教材 数据库原理与应用教程(第3版).
国家“十一五”规划教材 数据库原理与应用教程(第3版).
建立/修改/刪除資料庫 資料庫組成檔案 建立資料庫: 資料(庫)檔案 交易記錄檔 使用Enterprise Manager工具 自助法:
第1章 SQL Server 关系数据库简介 1.1 SQL Server 特点 1.2 SQL Server的安装和配置
第六章: 建立資料庫.
第 8 章 資料的 新增、修改與刪除.
二.資料庫系統建立與管理 Access 資料庫:windows下的單機資料庫 Access 操作 Mysql資料庫介紹.
第 11 章 建立檢視表.
第 14 章 預存程序.
Microsoft SQL Server 2000 李金双.
第 7 章 建立資料表與 資料庫圖表.
教 师:曾晓东 电 话: 数据库技术 教 师:曾晓东 电 话:
課程名稱:資料庫系統 授課老師:李春雄 博士
SQL Server 2000 数据库入门.
第7章 ADO.NET操作SQL Server数据库
建立/修改/刪除資料表 建立資料表 使用Enterprise Manager工具
5 数据库管理与保护 数据库运行的最小逻辑工作单位是事务,所有对数据库的操作,都以事务作为一个整体来执行或撤销。
第1章 SQL Server 2005 关系数据库简介.
第9章 SQL Server的数据库保护技术 教学目标:通过本章学习,了解SQL Server的安全体系结构的含义和安全认证模式的分类;掌握SQL Server登录账号、用户账号及角色的创建方法;熟悉权限的分类,掌握对象权限和语句权限的管理方法;明确SQL Server中数据完整性的种类,掌握数据完整性实现的具体方法;熟悉SQL.
第6章 SQL Server权限管理 6.1 SQL Server权限管理策略 6.2 用户权限管理 上一章 返回目录.
第 6 章 使用者權限.
Ch4.SQL Server 2005資料庫組成員元件介紹
实验二讲评 … 张榆….
第一章 SQL Server数据库基础.
数据库技术.
数据库应用技术 SQL Server 2005.
第20章 MySQL数据库.
数据库技术与应用.
学习要点: 备份的概念 备份的类型 数据库备份的方法 恢复数据库的方法
20 SQL Server全文檢索搜尋 20-1 SQL Server全文檢索搜尋 20-2 全文檢索目錄的建立 20-3 建立全文檢索索引
数据库原理与应用 合肥学院 叶潮流
第3章 关系数据库的创建与维护 Microsoft SQL Server2008 概述 SQL Server数据库基础 数据库的创建与维护
Microsoft TechNet 技術講座--資料庫技術升級系列三 精誠公司恆逸資訊 楊先民
第九章 创建数据库.
4.2 视图 (1) 视图是一个虚拟表,其内容来自对表查询的基础上。
CS, ZJU 4/18/2019 Chapter 7 数据库.
第2章 数据库的创建和管理 学习要点: 2.1 基本概念 2.2 创建数据库 2.3 数据库的管理 2.4 删除数据库
国家“十一五”规划教材 数据库原理与应用教程(第3版).
6 SQL語言與資料庫建置 6-1 SQL語言的基礎 6-2 SQL Server的資料庫結構 6-3 建立使用者資料庫
第 6 章 建立資料庫.
通讯录管理系统设计 常州工程职业技术学院 计算机技术系.
讲课人:王璞 浙江工商职业技术学院.
第 7 章 建立資料表與資料庫圖表.
第4章 表的创建与维护 4.1 数据类型 4.2 数据完整性约束 4.3 创建数据表 4.4 修改数据表 4.5 删除数据表.
实验一讲评 … 张榆….
第9章 存储过程的创建和使用 9.1 存储过程简介 9.2 创建存储过程 9.3 修改存储过程 9.4 删除存储过程 9.5 执行存储过程.
SQL Server2000概述 SQL Server简介 SQL Server安装 SQL Server数据库 2019/5/8.
第11章 安全管理 教学提示:数据库安全是关系数据库中的非常重要的方面,包括了系统安全、数据安全、资源管理、用户管理、权限管理、角色管理、口令管理以及授权、认证、审计等相当多方面的内容。本章讲述有关数据库安全方面的知识。 数据库系统的安全性是每个数据库管理员都必须认真考虑的问题。SQL Server.
第9章 视 图 教学提示:用户在查询数据库中的数据时,除了直接查看数据库中的表中的数据以外,还可以通过视图来查看表中的数据,也就是说,视图为用户提供了另外一种查看表中的数据的方式。 视图是一种虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自于定义视图的查询所引用的表,并且在引用视图时动态生成。
11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容.
Presentation transcript:

第四章 数据库管理和使用

本章主题 数据库是什么?数据库由什么构成?它存储在何处? 如何定义系统的类型,是关系的还是分析的? 如何通过SSMS、向导或查询编辑器窗口创建数据库 如何在查询编辑器窗口设置数据库选项 如何查看数据库的细节 如何用SSMS和查询编辑器窗口修改、移除、分离数据库

数据库管理和使用 数据库是表的集合,含有数据和一些其他的对象,如视图、索引、存储过程、用户自定义函数和触发器等。因此,对数据库的管理是一项很重要的任务。本章将从SQL Server 2005数据库的管理和使用方法讲起,主要包括: SQL Server 2005数据库基础和系统数据库、示例数据库介绍。 使用Management Studio创建、修改和删除数据库。 使用T-SQL创建、修改和删除数据库。 分离与附加数据库。 数据库的备份与还原。 通过本章学习,读者可以掌握数据库管理的基本操作。

第一节 基本概念 A B D C 日志文件 数据库的存储结构 数据文件 文件组

(一) 数据文件 在数据库中,文件是数据库物理存储的概念,每个SQL Server 2005 数据库最少包括两个文件:一个数据文件和一个日志文件。数据文件里包含数据和对象,如表、索引、视图和存储过程等。 数据文件,包括主要数据文件(Primary)、次要数据文件(Secondary)。 主要数据文件。主要数据文件是数据库的起点,指向数据库中文件的其它部分。它包含有数据库的启动信息和数据库中其它文件的指针。每个数据库都有一个主要数据文件。主要数据文件的推荐文件扩展名是“.mdf”。 次要数据文件。次要数据文件包含除主要数据文件外的所有数据文件。主要包括用户定义的用于存储用户数据的文件。有些数据库可能没有次要数据文件,而有些数据库则有多个次要数据文件,它们可以通过存放在不同的存储器上来存储数据。另外,如果数据库超过了单个 Windows 文件的最大大小,可以使用次要数据文件,这样数据库就能继续增长。次要数据文件的推荐文件扩展名是“.ndf”。

(二) 日志文件 在数据库中,日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个。日志文件的推荐文件扩展名是“.ldf”。 注意:默认情况下,数据和事务日志被放在同一个驱动器上的同一个路径下。这是为处理单磁盘系统而采用的方法。但是,在生产环境中,这可能不是最佳的方法。建议将数据文件和日志文件放在不同的磁盘上。

(三) 组文件 为了更好地实现数据库文件的组织,SQL Server 引入了文件组(filegroup)的概念。 (三) 组文件 为了更好地实现数据库文件的组织,SQL Server 引入了文件组(filegroup)的概念。 每个数据库有一个主要文件组。此文件组包含主要数据文件和未放入其他文件组的所有次要文件。可以创建用户定义的文件组,用于将数据文件集合起来,以便于管理、数据分配和放置。 通过设置文件组,可以有效地提高数据库的读写性能。例如,可以分别在三个磁盘驱动器上创建三个文件Data1.ndf、Data2.ndf 和Data3.ndf,然后将它们分配给文件组fgroup1。然后,可以明确地在文件组 fgroup1 上创建一个表。对表中数据的查询将分散到三个磁盘上,从而提高了性能。 SQL Server 2005提供了三种文件组类型。它们分别是主要文件组(Primary)、用户定义文件组(user_defined)和默认文件组(default)。 主要文件组。每个数据库有一个主要文件组,主要文件组包含主要数据文件和一些没有放入其它文件组的次要数据文件。所有系统表都被分配到主要文件组中。 用户定义文件组。由用户创建的文件组。用户在首次创建数据库或以后修改数据库时明确创建的任何文件组。 默认文件组。如果在数据库中创建对象时没有指定对象所属的文件组,对象将被分配给默认文件组。不管何时,只能将一个文件组指定为默认文件组。默认文件组中的文件必须足够大,能够容纳未分配给其他文件组的所有新对象。

组文件 默认情况下,主要文件组是默认文件组,除非使用 ALTER DATABASE语句进行了更改。系统对象和系统表属于PRIMARY文件组。 注意: (1)一个文件或文件组不能由多个数据库使用。例如,任何其他数据库都不能使用包含 sales 数据库中的数据和对象的文件 sales.mdf 和 sales.ndf。 (2)一个文件只能是一个文件组的成员。 (3)日志文件不能属于任何文件组。 (4)被包含在文件组里的数据文件不会自动增长长度,除非整个文件组里所有的数据文件都已经被填充满。

(四) 数据库的存储结构 1.数据库的基本结构 数据库的基本结构分三个层次,反映了观察数据库的三种不同角度。 (四) 数据库的存储结构 1.数据库的基本结构 数据库的基本结构分三个层次,反映了观察数据库的三种不同角度。 (1)物理数据层。这是数据库的最内层,是物理存储设备上实际存储的数据的集合。这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的位串、字符和字组成。 (2)概念数据层。这是数据库的中间一层,是数据库的整体逻辑表示。指出了每个数据的逻辑定义及数据间的逻辑联系,是存贮记录的集合。它所涉及的是数据库所有对象的逻辑关系,而不是它们的物理情况,是数据库管理员概念下的数据库。 (3)逻辑数据层。这是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。数据库不同层次之间的联系是通过映射进行转换的。

数据库的存储结构 2.数据库的存储结构 数据库的存储结构是指数据在物理存储设备上的存储方式,即数据的物理数据层。在数据库中数据存储采用页的存储方式,这些数据页包含了表中的行,其中: (1)每个数据页包含8KB的信息。每八个相连的页面称为一个扩展盘区。 (2)数据行不是以特定的顺序存储的,而且数据页也没有特定的顺序。 (3)在链接列表中数据页并不是链接的。 (4)当行插入到已满的数据页时,就会拆分数据页。 在数据存储结构的基础上,SQL Server采用两种方式访问数据: (1)扫描表中所有的数据页,称为“表扫描”,它会从表的起始处开始扫描,对表中的所有行从头到尾进行逐页扫描。 (2)使用索引。 使用索引检索数据的效率要较第一种方法要高一点,索引在后面的章节中将讲到。

第二节 SQL Server 2005的系统数据库与示例数据库 Master 数据库 Model 数据库 Msdb 数据库 系统数据库 Tempdb 数据库 Resource 数据库 示例数据库

(一) 系统数据库 在所有数据库中都有一组系统数据库。SQL Server 2005包含以下几个系统数据库:master、model、msdb、tempdb(和Resource数据库),如图4.1所示。而Resource数据库不可见,那是因为Resource数据库是只读数据库,它包含了 SQL Server 2005 中的所有系统对象。SQL Server 系统对象(例如 sys.objects)在物理上持续存在于 Resource 数据库中,但在逻辑上,它们出现在每个数据库的 sys 架构中。 在所有数据库中都有一组系统表,SQL Server使用这些系统表来维护数据库。系统表中存储了所有列的信息、所有用户的信息以及许多其他信息(即元数据)。不同于以往版本的SQL Server,在SQL Server 2005中,系统表的安全性有了改进和增强,系统表不再能直接访问,而只能通过视图访问,如图4.2所示“打开表”选项为灰色。也不能在系统数据库上定义触发器。 图4.1 系统数据库 图4.2系统表不能直接访问

(1) 隐藏系统数据库 鉴于系统数据库的重要性,用户可以在必要时隐藏SQL Server Management Studio中的系统数据库,具体步骤如下: (1)选择菜单栏中的【工具】|【选项】命令; (2)出现【选项】对话框,如图4.3所示,在左侧的【环境】|【常规】页中,选中【在对象资源管理器中隐藏系统对象】,再单击【确定】按钮; (3)这时会出现警告对话框,如图4.4所示,提示SQL Server Management Studio必须重新启动更改才会生效,单击【确定】按钮; (4)关闭并重新启动SQL Server Management Studio,系统数据库已经被隐藏。 图4.3 【选项】对话框 图4.4 提示对话框

(2) 系统数据库的各种类型 1.master数据库 master 数据库记录 SQL Server 系统的所有系统级信息。这包括实例范围的元数据(例如登录帐户)、端点、链接服务器和系统配置设置。此外,master 数据库还记录了所有其他数据库的存在、数据库文件的位置以及 SQL Server 的初始化信息。因此,如果 master 数据库不可用,则 SQL Server 无法启动。在 SQL Server 2005 中,系统对象不再存储在 master 数据库中,而是存储在 Resource 数据库中(后面将提到Resource 数据库)。 使用 master 数据库时,由于master数据库的重要性,要尽量注意执行以下的操作,防止数据库崩溃: 始终有一个 master 数据库的当前备份可用。 执行下列操作后,尽快备份 master 数据库: ①创建、修改或删除任意数据库 ②更改服务器或数据库的配置值 ③修改或添加登录帐户 不要在 master 中创建用户对象。否则,必须更频繁地备份 master。 不要针对master数据库将 TRUSTWORTHY 选项设置为ON(TRUSTWORTHY选项的作用是要求设置管理员权限)。

系统数据库的各种类型 2.model数据库 model数据库用作在SQL Server实例上创建的所有数据库的模板。因为每次启动SQL Server时都会创建tempdb,所以model数据库必须始终存在于SQL Server系统中。当发出CREATE DATABASE语句时,将通过复制model数据库中的内容来创建数据库的第一部分,然后用空页填充新数据库的剩余部分。 如果修改model数据库,之后创建的所有数据库都将继承这些修改。就好像建立了一个模板,在以后创建数据库的时候都将继承这些模板的基本属性。 3.msdb数据库 msdb数据库由SQL Server代理用于计划警报和作业,也可以由其他功能(如Service Broker和数据库邮件)使用。

系统数据库的各种类型 4.tempdb数据库 tempdb系统数据库是一个全局资源,可供连接到SQL Server实例的所有用户使用,并可用于保存下列各项: 显式创建的临时用户对象,如全局或局部临时表、临时存储过程、表变量或游标。 SQL Server 2005数据库引擎创建的内部对象,例如,用于存储假脱机或排序的中间结果的工作表。 由使用已提交读(使用行版本控制隔离或快照隔离事务)的数据库中数据修改事务生成的行版本(行版本用于在修改行中存储的值时维护各个阶段的值,包括当前值、原始值和默认值。例如,在修改了行中的某列后,该行的行状态将为 Modified,并且有两个行版本:Current(包含行的当前值)和 Original(包含列修改前行的值))。 由数据修改事务为实现联机索引操作、多个活动的结果集 (MARS) 以及 AFTER 触发器等功能而生成的行版本。 tempdb中的操作是最小日志记录操作。这将使事务产生回滚。每次启动SQL Server时都会重新创建tempdb,从而在系统启动时总是保持一个干净的数据库副本。在断开联接时会自动删除临时表和存储过程,并且在系统关闭后没有活动连接。因此tempdb中不会有什么内容从一个SQL Server会话保存到另一个会话。不允许对tempdb进行备份和还原操作。

系统数据库的各种类型 5.Resource数据库 Resource 数据库是只读数据库,它包含了 SQL Server 2005 中的所有系统对象。SQL Server 系统对象(例如 sys.objects)在物理上持续存在于 Resource 数据库中,但在逻辑上,它们出现在每个数据库的 sys 架构中。Resource 数据库不包含用户数据或用户元数据。 Resource 数据库可比较轻松快捷地升级到新的 SQL Server 版本。在早期版本的 SQL Server 中,进行升级需要删除和创建系统对象。由于 Resource 数据库文件包含所有系统对象,因此,现在仅通过将单个 Resource 数据库文件复制到本地服务器便可完成升级。同样,回滚 Service Pack 中的系统对象更改只需使用早期版本覆盖 Resource 数据库的当前版本。 Resource 数据库存储在数据库服务器的物理文件名是 mssqlsystemresource.mdf 和mssqlsystemresource.ldf。默认情况下,这些文件位于<驱动器>:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\ 这个位置。每个SQL Server实例都具有一个(也是唯一的一个)关联的 mssqlsystemresource.mdf 文件,并且实例间不共享此文件。

(二) 示例数据库 在Microsoft SQL Server 2000中微软为用户提供了Northwind示例数据库和Pubs示例数据库。让用户在学习SQL Server的时候能够通过示例数据库的使用快速的掌握数据库的使用方法。在Microsoft SQL Server 2005中,微软引入了 Adventure Works Cycles 公司。AdventureWorks、AdventureWorksDW是SQL Server 2005中的示例数据库(如果在安装过程中已选择了安装它们的话)。这些数据库基于一个自行车生产公司,以一种简单的、易于理解的方式来展示SQL Server 2005的新功能,如Reporting Services、 CLR(公共语言运行时)特性以及许多其他特性。尽管示例数据库不是为新手准备的,但在学习完基础知识后,使用它们也不会有困难。 以下是微软公司对示例数据库的说明:Adventure Works Cycles,是AdventureWorks 示例数据库所基于的虚构公司,是一家大型跨国生产公司。公司生产金属和复合材料的自行车,产品远销北美、欧洲和亚洲市场。公司总部设在华盛顿州的伯瑟尔市,拥有 299 名雇员,而且拥有多个活跃在世界各地的地区性销售团队。

示例数据库 在 2000 年,Adventure Works Cycles 购买了位于墨西哥的小型生产厂 Importadores Neptuno。Importadores Neptuno 为 Adventure Works Cycles 产品生产多种关键子组件。这些子组件将被运送到伯瑟尔市进行最后的产品装配。2001 年,Importadores Neptuno 转型成为专注于旅行登山车系列产品的制造商和销售商。 实现一个成功的财务年度之后,Adventure Works Cycles 希望通过以下方法扩大市场份额:专注于向高端客户提供产品、通过外部网站扩展其产品的销售渠道、通过降低生产成本来削减其销售成本。 在SQL Server 2005中,示例数据库包括: AdventureWorks 示例 OLTP 数据库 AdventureWorksDW 示例数据仓库 AdventureWorksAS 示例 Analysis Services 数据库 这些数据库用在 SQL Server 联机丛书的代码示例以及随产品一起安装的配套应用程序和代码示例中。

示例数据库 默认情况下,SQL Server 2005 中不安装 AdventureWorks (OLTP)、AdventureWorksDW(数据仓库)、AdventureWorksAS(Analysis Services) 示例数据库以及附带示例。可以从 Microsoft下载中心下载这些示例和示例数据库,或者在安装过程中或安装完成后按照以下过程安装示例数据库和示例。 (1)运行SQL Server 2005安装程序; (2)在“要安装的组件”页上选择【工作站组件、联机丛书和开发工具】,如图4.5; (3)单击【高级】,然后展开【文档、示例和示例数据库】,如图4.6; (4)选择【示例代码和应用程序】,如图4.7; (5)展开【示例数据库】,然后选择要安装的示例数据库。

示例数据库 图4.5工作站组件、联机丛书和开发工具 图4.6 文档、示例和示例数据库 图4.7 示例代码和应用程序

第三节 使用Management Studio管理数据库 Microsoft SQL Server 2005为用户提供了强大的图形界面工具Management Studio,通过它,用户可以方便的完成对数据库的创建、修改和删除等操作。下面介绍如何使用Management Studio创建数据库。 创建数据库 修改数据库 删除数据库 数据库对象介绍

(一) 创建数据库 在Microsoft SQL Server Management Studio中,可以使用图形工具创建数据库,具体步骤如下: (1)依次选择【开始】|【程序】|【Microsoft SQL Server 2005】|【SQL Server Management Studio】,打开SQL Server Management Studio窗口,点击【连接】按钮,连接到目标服务器。 (2)连接上目标服务器以后,在界面左边的【对象资源管理器】窗口中的【数据库】节点上单击鼠标右键,弹出快捷菜单,选择【新建数据库】命令。 (3)出现【新建数据库】窗口,如图4.8所示,在【数据库名称】栏输入要创建的数据库名称,在这里以Student命名数据库。在【所有者】文本框中输入数据库的所有者(注:可以采用默认值,以当前登录账号为所有者;也可以点击【所有者】输入框右边的图标 自行选择)。在【数据库文件】编辑框中的【逻辑名称】列输入文件名,在【初始大小】列设置文件初始值大小,在【自动增长】列设置自动增长值大小(当数据文件或日志文件满时,系统会根据此处的设置自动增大文件的容量)。

创建数据库 (4)在【路径】列设置文件的保存目录,单击【路径】列后的 按钮,出现【定位文件夹】对话框,选择保存文件的目录。如果不需要改变以上各列的设置,请保持其默认值(注:系统默认值为SQL Server安装路径)。 (5)在【新建数据库】窗口中选择【选择页】中的【选项】,如图4.9所示,设置数据库的配置参数。 图4.8 【新建数据库】窗口

创建数据库 (6)可以根据系统的要求,添加新的文件组,步骤如下:点击【新建数据库】窗口的【文件组】选项,单击【添加】按钮,就会增加一个文件组,在【名称】列输入文件组的名称,如图4.10所示。新创建的文件组包含0个文件。 图4.9 【选项】页面

创建数据库 (7)如果要添加新的文件,按照以下步骤执行:单击【添加】按钮,在【数据库文件(F)】框中会增加一条数据文件,在【逻辑名称】列中输入数据文件的名称。单击【文件组】,会出现在第6步创建的文件组,默认为主要文件组(Primary),如图4.11所示。 图4.10 【文件组】页面

创建数据库 图4.11 新增数据库文件 (8)所有属性设置完毕以后,单击【确定】按钮,系统开始创建数据库,创建成功以后,在【对象资源管理器】中可以看到创建成功的数据库Student。

(二) 修改数据库 数据库在创建好以后,有时并不能满足用户的需求,这时就需要对数据库进行修改。这一节将讲述怎样用Management Studio修改数据库,调整数据库的基本属性,包括数据库参数选项配置、数据库扩大、文件及文件组管理、更改数据库所有者等。 更改数据库所有者 扩大数据库 收缩数据库 添加和删除数据文件和日志文件

(1) 更改数据库所有者 要修改Student数据库的文件属性,首先在【对象资源管理器】中鼠标右击【Student】,选择【属性】,弹出【数据库属性】窗口,如图4.12,点击【所有者】右边的 按钮,出现【选择数据库所有者】窗口,如图4.13,点击【浏览】按钮,出现图4.14所示窗口,选择连接数据库的用户以后,点击【确定】按钮,达到更改数据库所有者的目的。 图4.12 数据库属性窗口

更改数据库所有者 图4.13 选择数据库所有者窗口 图4.14 查找对象窗口

(2) 扩大数据库 随着数据库中数据的增加,数据库中的数据文件和日志文件的空间有可能被占满,此时就需要为数据文件和日志文件分配更多的空间。SQL Server 2005可以根据创建数据库时设定的增长参数自动扩大数据文件和日志文件。当然,用户也可以手动调整数据库数据文件和日志文件的大小。下面使用Management Studio来手动扩大数据库。具体步骤如下: 图4.15 更改Student数据文件的自动增长设置   (1)在【对象资源管理器】中鼠标右击【Student】,选择【属性】,弹出【数据库属性】窗口。 (2)在【数据库属性】窗口中选择【文件】选项,选择要修改的【数据库文件(F)】中【自动增长】列的 按钮,出现如图4.15所示的对话框(注:这里修改Student数据文件)。 (3)更改【文件增长】选项:可以把数据库数据文件的增长方式选择为按百分比或者按照MB增长;更改【最大文件大小】选项:可以把文件设置为固定大小,也可以设置为无限制增长。设置好以后,单击【确定】按钮。

(3) 收缩数据库 SQL Server 2005允许用户通过压缩数据库把不使用的空间释放出来,数据文件和日志文件都可以缩小。用户可以手工缩小数据文件,也可以自动周期性缩小数据库文件。 数据库的缩小是有限制的,数据库不会缩小到小于初始创建时的数据库大小,例如,一个初始大小为10MB的数据库,现在容量为100MB,那么以后在缩小数据库的时候最小只能到10MB。 但是可以使用DBCC SHRINKFILE语句可以把单个的数据文件压缩至比初始值还小。这个操作只能分别对每个数据文件单独操作,不能对整个数据库操作。 日志文件的收缩受到文件边界的限制,虚拟日志文件的大小决定可收缩的程度,日志文件不会缩小到小于日志文件的初始大小。在SQL Server 2005中,可以使用DBCC SHRINKDATABASE 或者 DBCC SHRINKFILE语句来压缩日志文件,但在操作前,要把需要缩小的日志文件的虚拟日志文件设置为非活动状态。

收缩数据库 使用Management Studio缩小数据库的操作步骤如下: (1)在【对象资源管理器】中鼠标右击“Student”数据库,选择【任务(T)】|【收缩(S)】,如图4.16所示。 (2)在图4.16中,如果要对整个数据库进行收缩,可选择子菜单中的【数据库(D)】命令,出现如图4.17所示的对话框。选择图中【收缩操作】下的复选框,激活调节框,就可以根据需要调节最大可用空闲空间,单击【确定】按钮完成对数据库的收缩操作。 图4.16 收缩数据库和文件

收缩数据库 图4.17 【收缩数据库】对话框 (3)如果要对数据库文件进行收缩,可以选择子菜单中的【文件(F)】命令,出现如图4.18所示的对话框。按照图中的相应的收缩方法,对文件进行收缩操作。完成后单击【确定】按钮完成对文件的收缩操作。

收缩数据库 (4)除了上面介绍的数据库收缩方法以外,SQL Server 2005还为用户提供了自动收缩数据库的方法。在数据库的属性页中将【自动收缩】选项设置为“True”即可。如图4.19所示。 图4.18 【收缩文件】对话框

收缩数据库 图4.19 设置数据库自动收缩功能

(4) 添加和删除数据文件和日志文件 在SQL Server 2005中,用户可以通过添加数据文件和日志文件扩展数据库,也可以通过删除数据文件和日志文件来缩小数据库。添加文件在前面的内容中已经讲过,相对比较容易,而删除文件相对比较复杂。删除数据文件和日志文件时要求它们必须是空文件。因此删除数据文件时需将数据转移到其它文件组的数据文件中去。而日志文件不能转移,要清除掉非活动日志,必须删除日志或者备份日志,当日志文件为空时,就可以删除此日志文件了。

添加和删除数据文件和日志文件 使用Management Studio完成数据文件、日志文件添加、删除的操作步骤如下: (1)采用前面的方法打开【数据库属性】对话框。 (2)如果是添加文件,可单击【添加】按钮,出现一个如图4.20所示的界面,在【数据库文件】列表中,填充相应的字段就可以添加新的数据文件或者是日志文件。如果要删除文件,可在【数据库文件】列表中选择需要删除的文件,点击【删除】按钮就可以了。 图4.20 添加文件 (3)如果要对文件组进行操作,选择【数据库属性】页面左边的【文件组】选项,完成对文件组的添加、删除操作。

(三) 删除数据库 当数据库不再需要时,可以删除数据库。但系统数据库不能够删除。在删除数据库后需要及时备份master数据库,因为删除操作会更改master数据库的内容。使用Management Studio删除数据库的具体步骤如下: (1)在【对象资源管理器】窗口中选中需要删除的数据库,点击鼠标右键,弹出菜单,选择【删除】命令。 (2)出现【删除对象】对话框,如图4.21所示。通过选择复选框决定是否删除数据库备份和还原历史纪录信息,以及关闭现有连接。 图4.21 【删除对象】对话框 (3)单击【确定】按钮,完成数据库删除操作。

(四) 数据库对象介绍 在SQL Server 2005中,数据库对象定义了数据库内容的结构。常见的数据库对象包括: 表(Table) 数据库中的表与日常生活中使用的表格类似,它也是由行(Row) 和列(Column)组成的。列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。行包括了若干列信息项。一行数据称为一个或一条记录,它表达有一定意义的信息组合。一个数据库表由一条或多条记录组成,没有记录的表称为空表。每个表中通常都有一个主关键字,用于唯一地确定一条记录。 索引(Index) 索引是根据指定的数据库表列建立起来的顺序。它提供了快速访问数据的途径,并且可监督表的数据,使其索引所指向的列中的数据不重复。 视图(View) 视图看上去同表似乎一模一样,具有一组命名的字段和数据项,但它其实是一个虚拟的表,保存的是一条查询命令,在数据库中并不实际存在。视图中的数据是由查询数据库表产生的,它可以限制用户只能看到和修改的他有权看的数据,从而控制用户对数据的访问,并能简化数据的显示,即通过视图只显示那些需要的数据信息。

数据库对象介绍 图表(Diagram) 在SQL Server中图表其实就是数据库表之间的关系示意图。利用它可以编辑表与表之间的关系。 缺省值(Default) 缺省值是当在表中创建列或插入数据时,对没有指定其具体值的列或列数据项赋予事先设定好的值。 规则(Rule) 规则是对数据库表中的数据信息进行限制,常用于描述企业的业务规则。比如:@hire_date>='1980-1-1' and @hire_date<=getdate()表示需要的雇佣日期在1980年1月1日到现在之间。 触发器(Trigger) 触发器是一个用户定义的SQL 事务命令的集合。当对一个表进行插入、更改、删除时,这组命令就会自动触发执行。 存储过程(Stored Procedure) 存储过程是为完成特定的功能而汇集在一起的一组SQL 程序语句,经编译后存储在数据库中的SQL 程序。 用户(User) 所谓用户就是有权限访问数据库的人。

第四节 使用T-SQL管理数据库 前面介绍了用Management Studio管理数据库,下面介绍如何使用T-SQL命令来管理数据库。 创建数据库 修改数据库 删除数据库

(一) 创建数据库 使用Transact-SQL语句创建数据库的语法格式如下: [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ] [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ] ) [ ,...n ] }   <filegroup> ::= { FILEGROUP filegroup_name [ DEFAULT ] <filespec> [ ,...n ] <external_access_option> ::= DB_CHAINING { ON | OFF } | TRUSTWORTHY { ON | OFF } CREATE DATABASE database_name [ ON [ PRIMARY ] [ <filespec> [ ,...n ] [ , <filegroup> [ ,...n ] ] [ LOG ON { <filespec> [ ,...n ] } ] ] [ COLLATE collation_name ] [ WITH <external_access_option> ] [;] <filespec> ::= { ( NAME = logical_file_name , FILENAME = 'os_file_name' [ , SIZE = size [ KB | MB | GB | TB ] ]  

创建数据库 对创建数据库语句的部分参数说明如下: database_name:新数据库的名称。数据库名称在 SQL Server 的实例中必须唯一,并且必须符合标识符规则。最多可以包含 128 个字符。 ON:指定显式定义用来存储数据库数据部分的磁盘文件(数据文件)。当后面是以逗号分隔的、用以定义主文件组的数据文件的 <filespec> 项列表时,需要使用 ON。主文件组的文件列表可后跟以逗号分隔的、用以定义用户文件组及其文件的 <filegroup> 项列表(可选)。 PRIMARY:用来定义主要数据文件。一个数据库只能有一个主文件。 LOG ON:指定显式定义用来存储数据库日志的磁盘文件(日志文件)。LOG ON 后跟以逗号分隔的用以定义日志文件的 <filespec> 项列表。如果没有指定 LOG ON,将自动创建一个日志文件,其大小为该数据库的所有数据文件大小总和的 25% 或 512 KB,取两者之中的较大者。不能对数据库快照指定 LOG ON。

创建数据库例题 例4-1:在服务器上建立一个数据库MyDatabase,包含3个40MB的数据文件,2个20MB的日志文件,和一个文件组。文件组包含两个文件,文件存放路径为“F:\data”。 打开Management Studio建立和目标服务器的连接以后,单击工具栏上的【新建查询】按钮,在查询编辑器中输入如下语句:(其中“――”符号后的中文语句为注释语句,可以不用录入,但是建议在编写代码时学会编写注释语句) USE master; GO -- 判断是否存在名称为MyDatabase的数据库,如果有,则删除; IF DB_ID (N'Mydatabase') IS NOT NULL  DROP DATABASE Mydatabase; CREATE DATABASE Mydatabase

创建数据库例题 ON PRIMARY  (  NAME = mydb1,  (  NAME = mydb1,  FILENAME = 'F:\data\mydb1.mdf',  SIZE = 40MB,  MAXSIZE = 100,  FILEGROWTH = 15%  ),  FILEGROUP mydbgroup  NAME = mydb2,  FILENAME = 'F:\data\mydb2.ndf',  FILEGROWTH = 5 ) (  NAME = mydb3,  FILENAME = 'F:\data\mydb3.ndf',  SIZE = 40MB,  MAXSIZE = 100,  FILEGROWTH = 5  )  LOG ON  (  NAME = mydb_log1,  FILENAME = 'F:\data\mydb_log1.ldf',  SIZE = 20MB,  MAXSIZE = 50,  ),  NAME = mydb_log2,  FILENAME = 'F:\data\mydb_log2.ldf',  ); GO

创建数据库例题 单击 按钮,就会完成数据库的创建,如图4.22,创建的数据库存放在指定的位置,如图4.23。 图4.22 创建数据库

创建数据库例题 图4.23 存放在相应位置的数据库文件

(二) 修改数据库 1.更改数据库所有者 数据库的当前使用者可以更改为连接上数据库的任何用户。但是不能更改master、model和tempdb或者分发数据库的所有者。使用Transact-SQL语言更改数据库所有者的语法如下: sp_changedbowner [ @loginame = ] 'login' [ , [ @map= ] remap_alias_flag ] 参数说明: [ @loginame = ] 'login':当前数据库的新所有者的登录 ID。login 的数据类型为 sysname,无默认值。login 必须是一个已有的 SQL Server 登录名,或者是 Microsoft Windows 用户。如果 login 已通过数据库内现有的别名或用户安全帐户访问了数据库,则该登录名不能成为当前数据库的所有者。为了避免发生上述情况,请首先删除当前数据库内的别名或用户。 [ @map = ] remap_alias_flag:值 true 或 false,它指示已分配给旧的数据库所有者 (dbo) 的现有别名是映射到了当前数据库的新所有者,还是已被删除。remap_alias_flag 的数据类型为 varchar(5),默认值为 NULL。这指示旧的 dbo 的任意现有别名都映射到当前数据库的新所有者。false 指示删除旧的数据库所有者的现有别名。 返回代码值:0(成功)或 1(失败)

修改数据库例题 例4-2:将登录名 Albert 作为当前数据库的所有者,并映射到已分配给旧的数据库所有者的 Albert 现有别名。 EXEC sp_changedbowner 'Albert'

修改数据库 2.扩大数据库 扩大数据库的T-SQL语句的语法格式为: ALTER DATABASE database_naem MODIFY FILE (NAME = logical_file_name, MAXSIZE = max_size|UNLIMITED) 参数 logical_file_name 指的是要扩大的数据库文件的逻辑名称,参数max_size指明用户定义的可扩大使用的空间,其中UNLIMITED表示不限制数据库的大小,直到占满整个存储空间。

修改数据库例题 例4-3:将原来建立好的Student数据库由7MB改为20MB。 有时系统管理员只需要执行SQL脚本就可以完成工作,不需要花哨的用户界面。命令行脚本工具的名字是SQLCMD。从桌面依次选择【开始】|【运行】,输入“cmd”,会出现命令提示符窗口,在窗口依次输入以下语句: SQLCMD –S NET-DB (注:-S表示服务器,后面是服务器的名称) USE Student GO ALTER DATABASE Student MODIFY FILE (NAME= Student,MAXSIZE=20) 执行上面的语句后,在命令提示符窗口中显示结果,如图4.24。 图4.24 SQLCMD命令窗口

修改数据库 3.收缩数据库 使用T-SQL语言可以对数据库进行收缩操作,对数据库进行收缩操作其实是缩小数据库的所有数据文件和日志文件,当然也可以只缩小指定的某个文件。 (1)压缩数据库 缩小整个数据库的语法为: DBCC SHRINKDATABASE ( 'database_name' | database_id | 0 [ ,target_percent ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ) [ WITH NO_INFOMSGS ] 参数说明: 'database_name' | database_id | 0 :要收缩的数据库的名称或 ID。如果指定 0,则使用当前数据库。 target_percent:数据库收缩后的数据库文件中所需的剩余可用空间百分比。 NOTRUNCATE :通过将已分配的页从文件末尾移动到文件前面的未分配页来压缩数据文件中的数据。target_percent 是可选参数。文件末尾的可用空间不会返回给操作系统,文件的物理大小也不会更改。因此,指定 NOTRUNCATE 时,数据库看起来未收缩。NOTRUNCATE 只适用于数据文件。日志文件不受影响。 TRUNCATEONLY:将文件末尾的所有可用空间释放给操作系统,但不在文件内部执行任何页移动。数据文件只收缩到最近分配的区。如果与 TRUNCATEONLY 一起指定,将忽略 target_percent。TRUNCATEONLY 只适用于数据文件。日志文件不受影响。 WITH NO_INFOMSGS:取消消息。

修改数据库例题 例4-4:NET-DB服务器上的Student数据库,包含一个数据文件,大小为9MB,一个日志文件,大小为1MB。压缩该数据库,使空闲空间占总空间的20%,把缩小的空间释放。具体步骤如下: ① 打开命令提示符窗口,方法同前。 ② 输入语句 DBCC SHRINKDATABASE (Student,20,truncateonly) GO ③ 运行后界面如图4.25。 图4.25 数据库压缩后的结果

修改数据库 (2)压缩指定文件的空间 缩小指定文件空间的语法为: DBCC SHRINKFILE ( { 'file_name' | file_id } { [ , EMPTYFILE ] | [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ] } ) [ WITH NO_INFOMSGS ]

修改数据库 参数说明: 'file_name' :要收缩的文件的逻辑名称。 file_id :要收缩的文件的标识 (ID) 号。若要获得文件 ID,请使用 FILE_IDEX 系统函数,或查询当前数据库中的 sys.database_files 目录视图。 target_size :用兆字节表示的文件大小(用整数表示)。如果未指定,则 DBCC SHRINKFILE 将文件大小减少到默认文件大小。默认大小是创建文件时指定的大小,或者是使用 ALTER DATABASE 所设置的最后大小。如果指定了 target_size,则 DBCC SHRINKFILE 尝试将文件收缩到指定大小。将要释放的文件部分中的已使用页重新定位到保留的文件部分中的可用空间。 EMPTYFILE :将指定文件中的所有数据迁移到同一文件组中的其他文件。由于数据库引擎不再允许将数据放在空文件内,因此可以使用 ALTER DATABASE 语句来删除该文件。 NOTRUNCATE :在指定或不指定 target_percent 的情况下,将已分配的页从数据文件的末尾移动到该文件前面的未分配页。文件末尾的可用空间不会返回给操作系统,文件的物理大小也不会更改。因此,指定 NOTRUNCATE 时,文件看起来未收缩。 NOTRUNCATE 只适用于数据文件。日志文件不受影响。 TRUNCATEONLY :将文件末尾的所有可用空间释放给操作系统,但不在文件内部执行任何页移动。数据文件只收缩到最后分配的区。如果随 TRUNCATEONLY 指定了 target_size,则会忽略该参数。TRUNCATEONLY 只适用于数据文件。 WITH NO_INFOMSGS:取消显示所有信息性消息。

修改数据库例题 例4-5: NET-DB服务器上的Student数据库,包含一个数据文件,大小为9MB,一个日志文件,大小为1MB。压缩该数据库,使数据文件缩小到5MB,把输出信息到当前窗口。具体步骤如下: ① 打开命令提示符窗口,方法同前。 ② 输入语句 USE Student GO DBCC SHRINKFILE(Student,5) ③ 运行后界面如图4.26。 图4.26 数据文件压缩后的结果

修改数据库 4.添加和删除数据文件和日志文件 使用T-SQL添加和删除数据文件和日志文件的方法在这里只举一个例子来说明,语法就不再讲解了,请读者自行参考SQL Server的联机丛书。

修改数据库例题 ( NAME = test1log2, 例4-6:向 AdventureWorks 数据库中添加两个5MB的日志文件。 FILENAME = '''+ @data_path + 'test2log.ldf'', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB ), NAME = test1log3, FILENAME = '''+ @data_path + 'test3log.ldf'', )' ); GO 例4-6:向 AdventureWorks 数据库中添加两个5MB的日志文件。 USE master; GO --获取 SQL Server 数据存储路径 DECLARE @data_path nvarchar(256); SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1) FROM master.sys.master_files WHERE database_id = 1 AND file_id = 1); EXECUTE ( 'ALTER DATABASE AdventureWorks ADD LOG FILE

修改数据库例题 例4-7:删除 AdventureWorks 数据库中的test1dat4文件。 USE master; GO ALTER DATABASE AdventureWorks REMOVE FILE test1dat4;

(三) 删除数据库 删除数据库的T-SQL语法如下: DROP DATABASE { database_name | database_snopshot_name} [,..n][;] 例4-8:使用T-SQL语句删除Student数据库。具体步骤如下: ① 打开命令提示符窗口,方法同前。 ② 输入语句 DROP DATABASE Student GO ③ 运行后界面如图4.27。 图4.27 删除数据库后的界面

在属性页的左边有8个选项,下面分别介绍这些选项的含义。 第五节 查看数据库的属性 为了了解数据库的相关属性, SQL Server 2005提供了通过Management Studio查看数据库属性的方法。 查看数据库属性 数据库属性页 在要查看属性的数据库上(以Student数据库为例)单击鼠标右键,选择【属性】,打开数据库属性页。如图4.28所示。 在属性页的左边有8个选项,下面分别介绍这些选项的含义。

数据库属性页 (1)【常规】选项 【常规】选项用于查看数据库的基本属性,这些基本属性是不能够修改的,如图4.28所示。 图4.28 【常规】选项

数据库属性页 (2)【文件】选项 【文件】选项用于查看数据库的文件属性,包括数据库文件及所有者等信息。可以更改数据库文件和日志文件的自动增长方式和逻辑名称。 (3)【文件组】选项 【文件组】选项可以查看数据库文件所属的文件组及增加及删除数据库文件组。主文件组PRIMARY不能删除。 (4)【选项】选项 在前面讲解数据库收缩的时候(见图4.19),提到了将【自动收缩】选项设置为True,使数据库自动收缩。使用这个选项可以对数据库进行一些设置,具体内容参见本章的实训指导。

数据库属性页 (5)【权限】选项 【权限】选项用于访问数据库的权限。在默认情况下,数据库权限页内容为空。 如果要添加一个用户访问数据库的权限,鼠标点击权限页的【添加】按钮,弹出如图4.29所示的【选择用户或角色】页面,点击图中【浏览】按钮,选择需要添加的用户名称,这里选择public用户,完成用户添加,点击【确定】按钮,返回权限页。用户public的权限将在其中的显式权限位置显示,如图4.30,可以在此处设置用户对数据库的具体操作权限。 图4.29 【选择用户或角色】页面

数据库属性页 (6)【扩展属性】选项 这里对【扩展属性】选项不进行讲述,读者可自行参考相关的高级管理书籍。 图4.30 public用户权限显示 (6)【扩展属性】选项 这里对【扩展属性】选项不进行讲述,读者可自行参考相关的高级管理书籍。

数据库属性页 (7)【镜像】选项 “数据库镜像”是用于提高数据库可用性的主要软件解决方案。镜像基于每个数据库实现,并且只适用于使用完整恢复模式的数据库。打开【镜像】页,如图4.31,并用它来配置、修改数据库的数据库镜像的属性。还可以使用该页来启动配置数据库镜像安全向导,以查看镜像会话的状态,并可以暂停或删除数据库镜像会话。 注意:开始镜像前必须先配置安全性。如果镜像尚未开始,则必须使用此向导来开始。“镜像”页文本框将被禁用,直到向导完成为止。

数据库属性页 图4.31 【镜像】选项页 (8)【事务日志传送】选项 使用此选项可以配置和修改数据库的日志传送属性,使用日志传送,可以自动将“主服务器”实例上“主数据库”内的事务日志备份发送到单独“辅助服务器”实例上的一个或多个“辅助数据库”。

第六节 分离与附加数据库 SQL Server 2005提供的分离和附加数据库的功能能够完成分离数据库的数据和事务日志文件,根据需要再将分离后的文件重新附加到其他 SQL Server 实例,从而实现数据库的移动。 分散数据库 附加数据库 分离与附加数据库的作用

(一) 分离与附加数据库的作用 1.分离数据库 分离数据库是指将数据库从 SQL Server 实例中删除,并使数据库在其数据文件和事务日志文件中保持不变。之后,可以使用这些文件将数据库附加到任何 SQL Server 实例(包括分离该数据库的服务器)。如果存在以下情况,则不能分离数据库: (1)已复制并发布的数据库。如果进行复制,则数据库必须是未发布的。必须通过运行 sp_replicationdboption 禁用发布后,才能分离数据库; (2)数据库中存在数据库快照; (3)该数据库正在某个数据库镜像会话中进行镜像。除非终止该会话,否则无法分离该数据库; (4)数据库处于可疑状态。在 SQL Server 2005 中,无法分离可疑数据库;必须将数据库置入紧急模式,才能对其进行分离; (5)该数据库是系统数据库。

分离与附加数据库的作用 2. 附加数据库 用户可以附加复制的数据库,也可以附加分离出来的数据库。在附加数据库时,所有的文件(MDF和NDF)必须是有效的,如果存储数据文件的路径发生变化,则必须指明当前数据库的路径。 附加数据库日志文件的要求在某些方面取决于数据库是读-写的还是只读的,下面分别进行说明: (1)对于读-写数据库,通常可以附加新位置中的日志文件; (2)如果附加的主数据文件是只读的,则数据库引擎假定数据库也是只读的。对于只读数据库,日志文件在数据库主文件中指定的位置上必须可用。因为 SQL Server 无法更新主文件中存储的日志位置,所以无法创建新的日志文件。

(二) 分离数据库 使用 Management Studio 进行数据库的分离操作步骤如下: (1)在【对象资源管理器】窗口中,选择要分离的数据库【Student】,单击鼠标右键,弹出快捷菜单,选择【任务】|【分离】命令。 (2)弹出【分离数据库】对话框,设置分离数据库的配置信息。 (3)单击【确定】按钮,完成数据库分离操作。此时【对象资源管理器】已经没有“Student”数据库了。

(三) 附加数据库 使用 Management Studio 进行数据库的附加操作步骤如下: (2)弹出【附加数据库】对话框,点击【添加】按钮。 (3)出现【定位数据库文件】对话框,找到要附加的数据库文件。如图4.33所示,然后单击【确定】按钮。 图 4.32 附加数据库

附加数据库 (2)弹出【附加数据库】对话框,点击【添加】按钮。 (3)出现【定位数据库文件】对话框,找到要附加的数据库文件。如图4.33所示,然后单击【确定】按钮。 (4)回到【附加数据库】对话框,此时【Student】数据库的内容已在图中详细地显示出来,如图4.34。修改【附加为】列即可为数据库命名。 图4.33 【定位数据库文件】对话框

附加数据库 图4.34 附加数据库操作 (5)单击【确定】按钮,完成数据库附加操作。在【对象资源管理器】的【数据库】中即可看到该数据库。

第七节 数据库的备份与还原 在数据库管理方面,稳定性和安全性一直是数据库管理人员需要考虑的重要方面,而备份和还原数据库是维护数据库稳定和安全的一个必要手段。通过对数据库的备份和还原操作,系统可以相对保持一种比较正常的运行状态,由于备份的完整性,在用户遇到较为严重的故障时,可以避免由此引起的数据丢失。 数据库的备份 备份和还原数据库的意义 数据库的还原

(一) 备份和还原数据库的意义 用于还原和恢复数据的数据副本称为“备份”。备份数据库是数据库管理员(DBA)最重要的任务之一。在发生灾难性事故,比如存储器故障、用户错误(比如用户误删除了一个表)、系统崩溃、硬件故障、自然灾害等事故的时候,DBA可以使用备份文件还原数据库,从而最大程度地减少损失。 备份是保护投资的一种方法。正确地作好备份是很重要的。要确信所做的备份是有效的、可用的。对数据拥有几份备份或者拥有几个不同时期的备份,当有一个被损坏的情况下也可以根据需要以较小的代价进行恢复。 Microsoft SQL Server 2005 提供高性能备份和还原功能。SQL Server 备份组件和还原组件为保护 SQL Server 数据库中存储的关键数据而提供了重要的安全措施。实施计划妥善的备份和还原策略有助于保护数据库由于各种故障而造成的数据丢失。通过还原一组备份并恢复数据库来测试所拟的数据安全保护计划策略,为有效地应对灾难做好准备。 此外,数据库备份对于进行日常管理(如将数据库从一台服务器复制到另一台服务器,设置数据库镜像以及进行存档)非常有用。

(二) 数据库的备份 1. 使用Management Studio备份数据库 在Microsoft SQL Server 2005中,使用Management Studio 备份数据库的步骤如下: (1)在【对象资源管理器】窗口中,右键点击需要进行备份的数据库,选择弹出的快捷菜单中的【任务(T)】|【备份(B)...】命令。 (2)弹出【备份数据库】对话框,在【源】|【数据库(T)】中选择需要备份的数据库,这里选择Student数据库。在【备份类型】下拉列表框中选择备份类型。然后选择【备份组件】下面的【数据库】,如图4.35所示。 图4.35 【备份数据库】对话框

数据库的备份 该对话框中的备份类型有三种: 完全备份 这是大多数人常用的方式,它可以备份整个数据库,包含用户表、系统表、索引、视图和存储过程等所有数据库对象。但它需要花费更多的时间和空间,所以,一般推荐一周做一次完全备份。 事务日志备份 事务日志是一个单独的文件,它记录数据库的改变,备份的时候只需要复制自上次备份以来对数据库所做的改变,所以只需要很少的时间。为了使数据库具有鲁棒性,推荐每小时甚至更频繁的备份事务日志。 差异备份 也叫增量备份。它是只备份数据库一部分的另一种方法,它不使用事务日志,相反,它使用整个数据库的一种新映像。它比最初的完全备份小,因为它只包含自上次完全备份以来所改变的数据库。它的优点是存储和恢复速度快。推荐每天做一次差异备份。

数据库的备份 (3)在图4.35中分别为【备份集】选项组设置备份名称、说明和备份集过期时间。然后单击【目标】选项的【添加】按钮,为备份文件选择物理设备或逻辑设备。出现如图4.36所示的【选择备份目标】对话框,选择备份的设备或者文件名,最后单击【确定】按钮。 图4.36 【选择备份目标】对话框

数据库的备份 (4)回到如图4.35所示的对话框,选择左边【选择页】的【选项】,进入数据库备份参数设置界面,如图4.37所示,设置好设备参数后,单击【确定】按钮,数据库备份开始。数据库的备份时间决定于数据库的规模,备份整个数据库可能需要较长的时间。 图4.37 【备份数据库】|【选项】对话框 (5)备份完成后,系统会弹出备份完成提示框,单击【确定】按钮,完成备份操作。

数据库的备份 2.使用T-SQL语句备份数据库 BACKUP DATABASE { database_name | @database_name_var } TO <backup_device> [ ,...n ] [ <MIRROR TO clause> ] [ next-mirror-to ] [ WITH { DIFFERENTIAL | <general_WITH_options> } [ ,...n ] ] [;]

数据库的备份 备份文件或文件组的T-SQL语法: BACKUP DATABASE { database_name | @database_name_var } <file_or_filegroup> [ ,...n ] TO <backup_device> [ ,...n ] [ <MIRROR TO clause> ] [ next-mirror-to ] [ WITH { DIFFERENTIAL | <general_WITH_options> } [ ,...n ] ] [;] 备份日志的T-SQL语法: BACKUP LOG { database_name | @database_name_var } [ WITH { <general_WITH_options> | <log-specific_optionspec> } [ ,...n ] ]

数据库的备份 说明: { database_name | @database_name_var } 参数制定了备份事务日志、部分数据库或完整的数据库时所用的源数据库。如果作为变量 (@database_name_var) 提供,则可以将该名称指定为字符串常量 (@database_name_var = database name) 或字符串数据类型(ntext 或 text 数据类型除外)的变量。 <backup_device>参数指定用于备份操作的逻辑备份设备或物理备份设备。 在这里只介绍3种备份操作的T-SQL语法,具体操作参见4.8节的实训指导。

(三) 数据库的还原 使用Management Studio还原数据库 在Microsoft SQL Server 2005中,在执行恢复操作之前,必须先做尾日志操作把数据库设置为还原状态,否则SQL Server 2005不允许作数据库恢复操作,如图4.38所示。 图4.38 必须做尾日志备份操作 使用Management Studio 还原数据库的步骤如下: (1)首先作数据库的尾日志备份。在【对象资源管理器】窗口中,右键点击需要进行备份的数据库,选择弹出的快捷菜单中的【任务(T)】|【备份(B)...】命令。 (2)弹出【备份数据库】对话框,在【源】|【数据库(T)】中选择需要备份的数据库,选择【备份类型】下拉列表框,选择备份类型为“事务日志”。

数据库的还原 (3)选择左边【选择页】的【选项】,进入数据库备份参数设置界面,单击【事务日志】选项组中的“备份日志尾部,并使数据库处于还原状态”选项的单选按钮,如图4.39所示,单击【确定】。 图4.39 【选项】对话框

数据库的还原 (4)此时便可以还原数据库了。在【对象资源管理器】窗口中,右键点击需要进行还原的数据库,选择弹出的快捷菜单中的【任务(T)】|【还原(R)...】|【数据库(D)...】命令。 (5)出现【还原数据库】对话框,单击【源设备】一行最右边的 按钮,出现【指定备份】对话框,单击其中的【添加】按钮,出现【定位备份文件】对话框,选择相应的备份文件,如图4.40所示,备份文件扩展名是.bak。 图4.40 【定位备份文件】对话框

数据库的还原 (6)单击【确定】按钮。回到【还原数据库】对话框,如图4.41所示,单击【确定】按钮,完成数据库的还原。 图4.41 【还原数据库】对话框

数据库的还原 2. 使用T-SQL语句还原数据库 用户可以使用T-SQL语句方面地执行数据库恢复操作,在SQL Server 2005中,用Restore语句还原使用 BACKUP 命令所做的备份。使用此命令,可以实现以下操作: 基于完整数据库备份还原整个数据库(完整还原)。 还原数据库的一部分(部分还原)。 将特定文件、文件组或页面还原到数据库(文件还原或页面还原)。 将事务日志还原到数据库(事务日志还原)。 将数据库恢复到数据库快照捕获的时间点。 Restore命令的使用参见4.8节的实训指导。

第八节 实训:数据库管理与使用 1.实训任务 使用T-SQL语句还原和备份数据库。 2.实训指导 分析:以上任务包括2个部分,数据库的备份和数据库的还原。 3.实现步骤: (1)备份整个数据库 下面的示例将 Student 数据库备份到磁盘文件。 BACKUP DATABASE Student TO DISK = 'F:\data\Student.bak' GO

实训:数据库管理与使用 使用前面讲解的方法打开命令窗口,输入sqlcmd –s netfys 命令,录入上面的程序,出现如图4.42所示的执行结果。 (2)还原完整数据库备份 从 Student.bak备份文件中还原完整数据库备份。 RESTORE DATABASE Student FROM DISK = 'f:\data\Student.bak' GO 使用前面讲解的方法打开命令窗口,输入sqlcmd –s netfys 命令,录入上面的程序,出现了前面讲过的没有备份日志尾部造成的后果。如图4.43所示的执行结果。 图4.42 备份数据库执行结果 图4.43 还原数据库错误提示

实训:数据库管理与使用 解决这种问题的方法是备份日志的尾部,语句如下: BACKUP LOG Student   TO DISK = 'f:\data\Student.bak';   WITH NO_TRUNCATE , NOFORMAT, NOINIT, NAME = N'Student-事务日志 备份', SKIP, NOREWIND, NOUNLOAD, NORECOVERY , STATS = 10 GO 执行上面的语句之后,再来还原数据库,重新执行语句: RESTORE DATABASE Student FROM DISK = 'f:\data\Student.bak' 执行结果如图4.44。 图4.44 执行结果

本章小结 本章向读者介绍了SQL Server 2005数据库的基础和创建、修改和删除数据库的基本操作和一些复杂的数据库管理技术。同时也掌握了使用Management Studio管理和使用数据库的方法,以及使用Transact-SQL 语句管理和使用数据库的方法。希望读者在阅读完本章以后,能够继续学习相关数据库管理知识。

习 题 1.填空题 (1)在SQL Server 2005 中,系统数据库包括________、__________、__________和________。 (2)在SQL Server 2005,数据文件包括_____________和_____________。 (3)数据库的基本存储结构分为___________、___________、____________等几个层次。 (4)删除数据文件和日志文件时要求它们必须是空文件。删除数据文件时可以将数据转移到其它文件组的数据文件中去。而日志文件不能转移,要清除掉_________,必须删除______或者________,当日志文件为空时,就可以删除此日志文件了。 (5)在SQL Server 2005中主要文件组是默认文件组,除非使用 ____________ 语句进行了更改。 (6)如果要执行恢复操作,必须先做_________操作把数据库设置为还原状态,否则SQL Server 2005不允许作数据库恢复操作。

习 题 2.判断题 (1)一个数据库文件不能存在于两个或者两个以上的文件组里。 ( ) (2)日志文件属于Primary文件组。 ( ) 习 题 2.判断题 (1)一个数据库文件不能存在于两个或者两个以上的文件组里。 ( ) (2)日志文件属于Primary文件组。 ( ) (3)一个文件组可以放在不同的存储设备中。 ( ) (4)数据库在备份过程中不能执行缩小数据库和日志文件操作。 ( ) (5)数据库可以缩小到比原始数据库还要小。 ( ) (6)如果买了很好的硬件设备,基本不会出问题,那么就不用备份数据库。 ( ) (7)数据库备份是一个很复杂的工作,应该由专业的数据库管理员来进行管理。 ( ) 3.思考题 (1)简述SQL Server 2005中各系统数据库的用途。 (2)什么叫分离数据库?在那种情况下不能够进行分离数据库的操作? (3)简述数据库备份和数据库还原对数据库的意义。以及它们之间的关系。

习 题 4.操作题 请分别使用图形管理工具Management Studio和T-SQL语句创建数据库Student,要创建的数据库要求如下:数据库名称为Student,包含3个45MB的数据文件,2个20MB的日志文件和一个文件组。主文件为第一个文件,主文件的后缀为 .mdf ,次要文件的后缀名为 .ndf ,要明确定义日志文件,其后缀名为 .ldf,所有的文件放在目录“D:\data”中。

本章结束 Thank You !