在 SQL Server 2005 中,附加和分离数据库可以通过以下 SQL 语句实现:
一、附加数据库
使用 `sp_attach_db` 存储过程 该过程用于附加数据库文件(.mdf 和 .ldf)到服务器。需提供数据库名称和文件路径(绝对路径)。
```sql
EXEC sp_attach_db
@dbname = N'database_name',
@filename1 = N'C:\path\to\dbname.mdf',
@filename2 = N'C:\path\to\dbname_log.ldf';
```
注意事项
- 若数据库已存在,需先分离(`sp_detach_db`)或重命名文件;
- 附加后,数据库将处于 `ONLINE` 模式。
使用 `CREATE DATABASE` 命令
SQL Server 2005 支持 `FOR ATTACH` 选项,可附加单个或多个数据库文件,并提供更多文件控制功能。
```sql
CREATE DATABASE database_name
ON (FILENAME = 'D:\path\to\dbname.mdf'),
(FILENAME = 'D:\path\to\dbname_log.ldf')
FOR ATTACH;
```
优势:比 `sp_attach_db` 更灵活,推荐用于新数据库附加。
二、分离数据库
使用 `sp_detach_db` 存储过程 该过程用于分离数据库并返回数据库文件。需提供数据库名称(或文件路径)。
```sql
EXEC sp_detach_db
@dbname = N'database_name';
```
注意事项
- 分离后,数据库文件将成为独立文件,但数据库实例仍可访问;
- 若数据库处于 `INUSE` 状态,需先将其设置为 `SINGLE_USER` 模式。
三、示例操作流程
备份数据库(推荐)
在分离或附加前,建议先备份数据库以防数据丢失。
分离数据库
```sql
EXEC sp_detach_db N'accpEconsole';
```
附加数据库
```sql
EXEC sp_attach_db
@dbname = N'accpEconsole',
@filename1 = N'C:\accpEconsole.mdf',
@filename2 = N'C:\accpEconsole_log.ldf';
```
四、注意事项
文件路径: 附加时必须使用绝对路径,否则会报错; 权限
兼容性:`sp_attach_db` 已逐渐被 `CREATE DATABASE FOR ATTACH` 取代,但旧版本仍需使用前者。
通过以上方法,可在 SQL Server 2005 中灵活管理数据库的附加与分离操作。