《数据库基础及实践技术——SQL Server 2008》一3.6 分离和附加数据库

3.6 分离和附加数据库

利用分离和附加数据库的操作可以实现将数据库从一台计算机移动到另一台计算机,或者从一个实例移动到另一个实例的目的。
数据库被分离后,其所包含的数据文件和日志文件不再受数据库管理系统的管理,因此,用户可以复制或剪切该数据库的全部文件,然后将它们放置到另一台计算机上,或者本计算机的其他位置上。然后,通过附加的方法可以将数据库恢复到同一台数据库服务器上,或者附加到其他数据库服务器上。
如果要将数据库移动或复制到同一台服务器的不同SQL Server实例中,或者要移动数据库的数据文件或日志文件的位置,分离和附加数据库是一种有用的方法。

3.6.1 分离数据库

分离数据库是指将数据库从SQL Server实例中删除,但不实际删除数据库的数据文件和日志文件。这与删除数据库不同,删除数据库会将数据库的所有数据文件和日志文件删除,而分离数据库会保持数据库的数据文件和日志文件的完整和一致。
数据库被分离后用户就不能再使用该数据库了,分离数据库实际就是让数据库的数据文件和日志文件不受数据库管理系统的管理,使用户可以将数据库的数据文件和日志文件复制到另一台计算机上或者同一台计算机的其他地方。
分离数据库可以用图形化的方法实现,也可以通过Transact-SQL语句实现。
1. 用图形化方法实现
在SQL Server Management Studio中分离数据库的步骤如下:
1)在SQL Server Management Studio的对象资源管理器中,展开“数据库”节点,在要分离的数据库上单击鼠标右键,在弹出的快捷菜单中选择“任务”→“分离”命令(如图3-21所示,假设这里分离的是Students数据库),弹出如图3-22所示的窗口。
2)“要分离的数据库”列表框中列出了要分离的数据库名,用户可在此验证这是否为要分离的数据库。

3)若当前有用户连接到了被分离的数据库,则默认情况下是不能执行分离操作的。例如,图3-23中就有一个活动连接,此时如果单击“确定”按钮,则弹出如图3-24所示的错误提示对话框。为避免出现这样的分离失败情况,可选中“删除连接”复选框,这时再进行分离就不会出错了。
4)默认情况下,分离操作将在分离数据库时保留过期的优化统计信息。若要更新现有的优化统计信息,可选中“更新统计信息”复选框。
5)“状态”列显示了当前数据库的状态(“就绪”表示可以被分离;“未就绪”表示不可以被分离)。
6)如果状态是“未就绪”,则“消息”列将显示未就绪原因的超链接信息,如图3-23所示。当被分离的数据库有一个或多个“活动连接”时,“消息”列将显示有多少个“活动连接”(如图3-23中的“1活动连接”)。因此,在分离数据库之前,必须选中“删除连接”复选框来断开所有与数据库的活动连接。
7)分离数据库准备就绪后,单击“确定”按钮开始分离数据库。

  1. 用T-SQL语句实现
    分离数据库使用的是sp_detach_db系统存储过程,其语法格式为:

    sp_detach_db [ @dbname= ] 'dbname'
    [ , [ @skipchecks= ] 'skipchecks' ]

    各参数说明如下。
    [ @dbname = ] 'dbname':要分离的数据库的名称。
    [ @skipchecks = ] 'skipchecks':指定跳过还是运行“更新统计信息”。skipchecks的数据类型为nvarchar(10),默认值为NULL。如果要跳过“更新统计信息”,则指定true;如果要显式运行“更新统计信息”,则指定false。
    【例3-16】分离Students数据库,并跳过“更新统计信息”。

    EXEC sp_detach_db 'Students', 'true'

3.6.2 附加数据库

与分离数据库对应的操作是附加数据库。附加数据库就是将分离的数据库重新附加到数据库管理系统中,可以附加到本机的另一个SQL Server实例上,也可以附加到另一台数据库服务器上。在附加数据库之前,应先将要附加的数据库所包含的全部数据文件和日志文件放置到合适的位置。
在附加数据库时,必须指定主要数据文件的物理存储位置和文件名,因为主要数据文件中包含查找组成该数据库的其他文件所需的信息。如果在复制数据库文件时更改了其他文件(包括辅助数据文件和日志文件)的存储位置,则还应该明确指出所有已改变了存储位置的文件的实际存储位置信息。否则,SQL Server 将试图基于存储在主要数据文件中的文件位置信息附加其他文件,而这将导致附加数据库失败。
附加数据库可以用图形化的方法实现,也可以通过Transact-SQL语句实现。下面以附加之前分离的Students数据库为例,说明附加数据库的实现过程。
1. 用图形化方法实现
在SQL Server Management Studio中附加数据库的步骤如下:
1)在SSMS的对象资源管理器中,连接到要附加数据库的SQL Server实例上,展开该实例。
2)在“数据库”节点上单击鼠标右键,在弹出的快捷菜单中选择“附加”命令,弹出如图3-25所示的窗口。

3)单击“添加”按钮,然后在弹出的“定位数据库文件”窗口中指定Students数据库的主要数据文件所在的磁盘位置,并选中主要数据文件(这里为F:\Data文件夹中的Students.mdf),单击“确定”按钮,回到“附加数据库”窗口,此时该窗口形式如图3-26所示。
4)单击“确定”按钮完成附加数据库操作。
2. 用T-SQL语句实现
附加数据库的T-SQL语句是CREATE DATABASE,语法格式如下:

CREATE DATABASE database_name
    ON <filespec> [ ,...n ]
    FOR { ATTACH | ATTACH_REBUILD_LOG }

各参数说明如下。
database_name:要附加的数据库的名称。
:同创建数据库语句的,用于指定要附加的数据库的主要数据文件。
FOR ATTACH:指定通过附加一组现有的操作系统文件来创建数据库。必须有一个指定主要数据文件的 项。至于其他文件的项,只需要指定与第一次创建数据库或上一次附加数据库时路径不同的文件即可。FOR ATTACH 对数据库文件具有如下两个要求:所有数据文件(MDF和NDF)都必须可用;如果存在多个日志文件,这些文件也都必须可用。
FOR ATTACH_REBUILD_LOG:指定通过附加一组现有的操作系统文件来创建数据库。该选项只限于可读/写的数据库。如果缺少一个或多个事务日志文件,将重新生成日志文件。必须有一个指定主要数据文件的项。FOR ATTACH_REBUILD_LOG有如下两个要求:通过附加来创建的数据库是关闭的;所有数据文件(MDF 和NDF)都必须可用。
FOR ATTACH_REBUILD_LOG选项通常用于将有大型日志的可读/写数据库复制到另一台服务器上,在这台服务器上,将频繁使用数据库副本或仅用于读操作,因而所需的日志空间少于原始数据库的日志空间。
【例3-17】附加之前分离的Students数据库。

CREATE DATABASE Students
  ON (FILENAME = 'F:\Data\Students.mdf')
  FOR ATTACH

【例3-18】假设已对Students数据库进行了分离操作,并将其中的“students_data1.ndf”和“students_log1.ldf”文件移动到了“F:\Data”文件夹中(分离前这两个文件均在“D:\Data”文件夹中)。移动数据库文件后,附加该数据库。

CREATE DATABASE Students
  ON ( FILENAME = 'F:\Data\students.mdf'),
     ( FILENAME = 'F:\Data\students_data1.ndf'),
     ( FILENAME = 'F:\Data\students_log1.ldf')
  FOR ATTACH

可以通过分离和附加数据库的操作,将用户数据库从低版本的SQL Server升级到高版本的SQL Server中。例如,将SQL Server 2000环境中的数据库升级到SQL Server 2008环境中。
实现迁移的过程为:
1)用sp_detach_db存储过程将数据库从低版本的SQL Server中分离出来。
2)将分离后的数据库的全部数据文件和日志文件复制到合适的位置,此步骤是可选的,如果不需要移动数据库文件的位置,则可略去此步骤。
3)使用带有FOR ATTACH或FOR ATTACH_REBUILD_LOG选项的CREATE DATABASE语句,将复制的文件附加到高版本的SQL Server实例上。

时间: 2024-10-03 02:14:48

《数据库基础及实践技术——SQL Server 2008》一3.6 分离和附加数据库的相关文章

《数据库基础及实践技术——SQL Server 2008》一3.7 复制数据库

3.7 复制数据库 将数据库从一台服务器移动(复制)到另一台服务器有多种方法,3.6节介绍过的分离和附加数据库是一种方法,本节介绍的复制数据库是另一种方法,还有一种方法是使用备份和恢复数据库(在第13章介绍)技术.SQL Server 2008提供了复制数据库向导,利用该向导可以很方便地将数据库从一台服务器复制到另一台服务器,也可以将数据库复制到同一台服务器上.而且可以将SQL Server 2000或SQL Server 2005数据库复制到SQL Server 2008版本的实例上,从而实现

《数据库基础及实践技术——SQL Server 2008》一3.2 创建数据库

3.2 创建数据库 利用SQL Server Management Studio(SSMS)工具,可以用图形化的方法创建数据库,也可以通过Transact-SQL语句创建数据库.下面分别介绍这两种方法. 3.2.1 用图形化方法创建数据库 在SSMS工具中用图形化方法创建数据库的步骤为: 1)启动SSMS,并以数据库管理员身份连接到SQL Server数据库服务器的一个实例上. 2)在SSMS的"对象资源管理器"中,在SQL Server实例下的"数据库"节点上右击

《数据库基础及实践技术——SQL Server 2008》一3.4 修改数据库

3.4 修改数据库 创建完数据库后,用户在使用过程中可以根据需要对数据库的定义进行修改.修改数据库的操作主要包括如下几项: 扩大数据库空间. 缩小数据库空间. 添加和删除数据库文件. 创建文件组. 更改数据库所有者. 3.4.1 扩大数据库空间 如果在创建数据库时没有设置自动增长方式,则数据库在使用一段时间后可能会出现数据库空间不足的情况,这些空间包括数据空间和日志空间.如果数据空间不够,则意味着不能再向数据库中插入数据:如果日志空间不够,则意味着不能再对数据库数据进行任何修改操作,因为对数据的

《数据库基础及实践技术——SQL Server 2008》一第3章 数据库的创建与管理

第3章 数据库的创建与管理 数据库是存放数据的"仓库",用户在利用数据库管理系统提供的功能时,首先要将自己的数据保存到数据库中.本章介绍如何在SQL Server 2008中通过图形化方法和Transact-SQL语句创建用户数据库,同时介绍如何对用户数据库进行管理,包括对数据库空间的维护.分离和附加数据库.复制数据库等.

《数据库基础及实践技术——SQL Server 2008》一导读

前 言 数据库技术起源于20世纪60年代末,经过几十年的迅速发展,目前已经建立起一套较完整的理论体系,产生了一大批商用软件产品.随着数据库技术应用领域的不断扩大,对数据库的应用已深入到国民经济和社会生活的各个方面.因此,作为当代的大学生,学习和掌握数据库知识都是非常必要的. 为了提高计算机专业本科生对数据库知识的实践能力,很多高校的计算机专业对数据库的授课做了一些调整,相当一部分学校将数据库的教学安排在两个学期完成,或者分为两个阶段来完成.第一个阶段基本是以讲授数据库基本原理为主,第二个阶段以讲

《数据库基础及实践技术——SQL Server 2008》一3.1 SQL Server数据库概述

3.1 SQL Server数据库概述 SQL Server 2008中的数据库由包含数据的表集合以及其他对象(如视图.索引.存储过程等)组成,目的是为执行与数据有关的活动提供支持.SQL Server支持在一个实例中创建多个数据库,每个数据库在物理和逻辑上都是独立的,相互之间没有影响.每个数据库存储相关的数据.例如,可以用一个数据库存储商品及销售信息,用另一个数据库存储人事信息. 从数据库的应用和管理角度来看,SQL Server将数据库分为两大类:系统数据库和用户数据库.系统数据库是SQL

《数据库基础及实践技术——SQL Server 2008》一2.5 SQL Server Management Studio工具

2.5 SQL Server Management Studio工具 SQL Server Management Studio是SQL Server 2008中最重要的管理工具之一,使用这个工具既可以用图形化的方法,也可以通过编写SQL语句来实现对数据库的操作. SQL Server Management Studio是一个集成环境,用于访问.配置和管理所有的SQL Server组件,它组合了大量的图形工具和丰富的脚本编辑器,使技术水平不同的开发和管理人员都可以通过这个工具访问和管理SQL Se

《数据库基础及实践技术——SQL Server 2008》一1.2 数据库系统与数据库管理系统

1.2 数据库系统与数据库管理系统 本节介绍数据库系统的组成以及数据库管理系统的功能. 1.2.1 数据库系统的组成 数据库管理系统是一个系统软件,如SQL Server.Oracle.DB2等都是著名的数据库管理系统软件,但在有了数据库管理系统这个软件之后,并不意味着已经具有了用数据库管理系统管理数据的优点,必须在这个软件基础之上进行一些必要的工作,以把数据库管理系统提供的功能发挥出来.首先应该利用这个系统存放用户自己的数据,让数据库管理系统帮助我们把这些数据管理起来,其次还应有对这些数据进行

《数据库基础及实践技术——SQL Server 2008》一2.3 配置SQL Server 2008

2.3 配置SQL Server 2008 成功安装好SQL Server 2008后,根据需要可以对SQL Server 2008的服务器端和客户端进行适当的配置,以更符合用户的要求.本节介绍使用配置管理器工具配置SQL Server 2008的方法. SQL Server配置管理器(SQL Server Configuration Manager)综合了服务管理器.服务器网络实用工具和客户端网络实用工具的功能. 单击"开始"→"Microsoft SQL Server 2