转自:http://support.microsoft.com/kb/224071
更改某些 SQL Server 系统数据库的位置必须遵循的步骤与更改用户数据库的位置必须遵循的步骤不同。将分别对这些特殊情况给予说明。
注意:SQL Server 7.0 系统数据库与 SQL Server 2000 不兼容。不要将 SQL Server 7.0
master、
model、
msdb 或分发数据库附加到 SQL Server 2000。如果您使用的是 SQL Server 2005,则只能将 SQL Server 2005 数据库附加到一个实例。
本文的所有示例都假设 SQL Server 安装在 D:\Mssql7 目录中,而且所有数据库和日志文件都位于默认目录 D:\Mssql7\Data 中。这些示例将所有数据库的数据和日志文件都移到 E:\Sqldata。
先决条件
- 从数据库的当前位置备份当前所有数据库,尤其是 master 数据库。
- 必须具有系统管理员 (sa) 权限。
- 必须知道数据库的所有数据文件和日志文件的名称及当前位置。
注意:可以使用存储过程 sp_helpfile 来确定数据库所使用的所有文件的名称和当前位置:use <database_name> go sp_helpfile go
- 应可以以独占方式访问被移动的数据库。如果在此过程中出现问题并且无法访问已经移动的数据库,或无法启动 SQL Server,则需要查看 SQL Server 错误日志和 SQL Server 联机丛书以获取这些错误的更多信息。
移动用户数据库
以下示例将移动一个名为 mydb 的数据库,该数据库包含一个数据文件 Mydb.mdf 和一个日志文件 Mydblog.ldf。如果您要移动的数据库还有其他数据或日志文件,请在存储过程 sp_attach_db 中用一个逗号分隔的列表将它们全部列出。无论数据库包含多少文件,存储过程 sp_detach_db 都不会更改,原因是它不会列出这些文件。- 按如下所示分离数据库:
use master go sp_detach_db 'mydb' go
- 然后,将数据和日志文件从当前位置 (D:\Mssql7\Data) 复制到新位置 (E:\Sqldata)。
- 按如下所示重新附加指向新位置中这些文件的数据库:
use master go sp_attach_db 'mydb','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf' go
use mydb go sp_helpfile go