红蜻蜓文案网-你身边的文案专家

红蜻蜓文案网-你身边的文案专家

在sqlserver2005中

59

在 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';

```

四、注意事项

文件路径:

附加时必须使用绝对路径,否则会报错;

权限:需以 `sysadmin` 身份执行这些操作;

兼容性:`sp_attach_db` 已逐渐被 `CREATE DATABASE FOR ATTACH` 取代,但旧版本仍需使用前者。

通过以上方法,可在 SQL Server 2005 中灵活管理数据库的附加与分离操作。