SQL Server可以分离数据库的数据和事务日志文件,然后将其重新附加到同一台或另一台服务器上。
分离数据库将从SQL Server 删除数据库,但是保证在组成该数据库的数据和事务日志文件中的数据库完好无损。
然后这些数据和事务日志文件可以用来将数据库附加到任何SQL Server实例上,这使数据库的使用状态与它分离时的状态完全相同。
1. 分离数据库
分离数据库是指将数据库从SQL Server数据库管理系统中删除,但不会从磁盘上删除文件,而且数据库在其数据文件和事务日志文件中保持不变。
这些文件可以被附加到任何SQL Server数据库管理系统中。
分离数据库有两种方式:一种是使用图形化界面,一种是使用T-SQL语句。
(1)使用图形化界面分离数据库
在SSMS中右击要分离的数据库名称,在弹出的快捷菜单中选择”任务”->”分离”命令,如下图
![](https://ichiblog.cn/wp-content/uploads/2024/09/图片-7.png)
在弹出的”分离数据库”对话框中单击”确定”按钮即可完成数据库的分离。
(2)使用T-SQL语句分离数据库
可以使用系统存储过程 sp_detach_db 分离该数据库。
sp_detacj_db存储过程从服务器分离数据库,并可以选择在分离前在所有的表上运行update statistics。
语法格式如下:
SP_DETACH_DB @dbname= 'ichiDataBase'
--@dbname = 'dbname':要分离的数据库名称。@dbname的数据类型为sysname,默认值为null
,@SKIPCHECKS='SKIPCHECKS'
--@skipchecks的数据类型为nvarchar(10),默认值为null。 如果为true,则跳过update statistics。 如果为false,则运行update statistics。
2. 附加数据库
与分离对应的是附加数据库操作。
附加数据库可以很方便地在SQL Server 服务器之间利用分离后的数据库文件和事务日志文件组织成新的数据库。
附加数据库有两种方式。
一种是使用图形化界面,一种是使用T-SQL语句。
(1)使用图形化界面附加数据库
操作步骤如下:
在SSMS中右击”数据库”选项,在弹出的快捷菜单中选择”附加”命令,如下图所示:
![](https://ichiblog.cn/wp-content/uploads/2024/09/图片-8.png)
在弹出的”附加数据库”窗口中单击”添加”按钮,选择要附加的数据库文件,单击”确定”按钮完成数据库的附加,如下图所示:
![](https://ichiblog.cn/wp-content/uploads/2024/09/图片-9.png)
(2)使用T-SQL语句附加数据库
可以使用系统存储过程sp_attach_db将数据库附加到当前服务器,语法格式如下。
SP_ATTACH_DB
@DBNAME = 'ichiDataBase',
--@DBNAME = 'dbname'要附加到服务器的数据库名称。该名称必需是唯一的。
@filename1 = 'C:\Program Files\Microsoft SQL Server\MSSQL16.SQLEXPRESS\MSSQL\DATA\ichiDataBase.mdf'
--@filename1 = 'filename':数据库文件的物理名称,包括路径。
分离和附加数据库的操作可以将数据库从一台计算机移动到另外一台计算机,而不必重新创建数据库,当附加到数据库上时,必需指定主数据文件的名称和物理位置。
主数据文件包含查找由数据库组成的其他文件所需的信息。
如果存储的文件位置发生了变化,则需要手动指定辅助数据文件和事务日志文件的存储位置。