************************************移动系统数据库***********************************

预先安排的重定位与预定的磁盘维护过程

--------------------------------------------------------------------------------

若要将移动系统数据库数据或日志文件的操作作为预先安排的重定位或预定的维护操作的一部分,请执行下列步骤。此过程适用于除 master 和 Resource 数据库以外的所有系统数据库。

1.对于要移动的每个文件,请运行以下语句:

ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )

2.停止 SQL Server 实例或关闭系统以执行维护。有关详细信息,请参阅停止服务。

3.将文件移动到新位置。

4.重新启动 SQL Server 实例或服务器。有关详细信息,请参阅启动和重新启动服务。

5.通过运行以下查询来验证文件更改。

SELECT name, physical_name AS CurrentLocation, state_desc

FROM sys.master_files

WHERE database_id = DB_ID(N'<database_name>');

如果移动了 msdb 数据库并为数据库邮件配置了 SQL Server 实例,则请完成下列附加步骤。

1.通过运行以下查询,验证是否已为 msdb 数据库启用 Service Broker。

SELECT is_broker_enabled

FROM sys.databases

WHERE name = N'msdb';

2.通过发送测试邮件验证数据库邮件是否正常运行。有关详细信息,请参阅对数据库邮件进行故障排除。


故障恢复过程

--------------------------------------------------------------------------------

如果由于硬件故障而必须移动文件,则请执行下列步骤,将文件重新定位到一个新位置。

此过程适用于除 master 和 Resource 数据库以外的所有系统数据库。

说明:

如果数据库无法启动,即处于可疑模式下或处于未恢复状态,则只有 sysadmin 固定角色的成员才可以移动该文件。

 

1.如果启动了 SQL Server 实例,则将其停止。

2.通过在命令提示符下输入下列命令之一,在仅 master 恢复模式下启动 SQL Server 实例.在这些命令中指定的参数区分大小写.

如果未按所示方式指定参数,则命令会失败.

对于默认的 (MSSQLSERVER) 实例,请运行以下命令:

NET START MSSQLSERVER /f /T3608

对于命名实例,请运行以下命令:

NET START MSSQL$instancename /f /T3608

3.对于要移动的每个文件,请使用 sqlcmd 命令或 SQL Server Management Studio 运行以下语句。

ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' )

4.退出 sqlcmd 实用工具或 SQL Server Management Studio。

5.停止 SQL Server 实例。例如,运行 NET STOP MSSQLSERVER。

6.将文件移动到新位置。

7.重新启动 SQL Server 实例。例如,运行 NET START MSSQLSERVER。

8.通过运行以下查询来验证文件更改。

SELECT name, physical_name AS CurrentLocation, state_desc

FROM sys.master_files

WHERE database_id = DB_ID(N'<database_name>');

移动 master 数据库

--------------------------------------------------------------------------------

 

若要移动 master 数据库,请按下列步骤进行操作。

1.在“开始”菜单中,依次指向“所有程序”、Microsoft SQL Server 和“配置工具”,再单击 SQL Server 配置管理器。

2.在“SQL Server 服务”节点中,右键单击 SQL Server 实例(如 SQL Server (MSSQLSERVER)),并选择“属性”。

3.在“SQL Server (实例名) 属性”对话框中,单击“高级”选项卡。

4.编辑“启动参数”值以指向 master 数据库数据和日志文件的计划位置,然后单击“确定”。可以选择移动错误日志文件。

数据文件的参数值必须跟在 -d 参数的后面,日志文件的参数值必须跟在 -l 参数的后面。下面的示例显示 master 数据和日志文件默认位置的参数值。

-dC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\

master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\

LOG\ERRORLOG;-lC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\

DATA\mastlog.ldf

如果 master 数据和日志文件预先安排的重定位是 E:\SQLData,则参数值将更改为:

-dE:\SQLData\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\LOG\ERRORLOG;-lE:\SQLData\mastlog.ldf

5.通过右键单击实例名称并选择“停止”,停止 SQL Server 实例。

6.将 master.mdf 和 mastlog.ldf 文件移动到新位置。

7.重新启动 SQL Server 实例

8.通过运行以下查询,验证 master 数据库的文件更改

SELECT name, physical_name AS CurrentLocation, state_desc

FROM sys.master_files

WHERE database_id = DB_ID('master');

GO

移动 Resource 数据库

--------------------------------------------------------------------------------

在 SQL Server 2008 中,Resource 数据库的默认位置为 <驱动器>:\Program Files\Microsoft SQL Server\MSSQL10.<instance_name>\MSSQL\Binn\。无法移动该数据库。



***********************************移动用户数据库***********************

计划的重定位过程

--------------------------------------------------------------------------------

若要将移动数据或日志文件作为计划的重定位的一部分,请执行下列步骤:

1.运行以下语句。

ALTER DATABASE database_name SET OFFLINE;

2.将文件移动到新位置。

3.对于已移动的每个文件,请运行以下语句。

ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' );

4.运行以下语句。

ALTER DATABASE database_name SET ONLINE;

5.通过运行以下查询来验证文件更改。

SELECT name, physical_name AS CurrentLocation, state_desc

FROM sys.master_files

WHERE database_id = DB_ID(N'<database_name>');


计划的磁盘维护的重定位

--------------------------------------------------------------------------------

若要将重定位文件作为计划的磁盘维护过程的一部分,请执行下列步骤:

1.对于要移动的每个文件,请运行以下语句。

ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' );

2.停止 SQL Server 实例或关闭系统以执行维护。有关详细信息,请参阅停止服务。

3.将文件移动到新位置。

4.重新启动 SQL Server 实例或服务器。有关详细信息,请参阅启动和重新启动服务。

5.通过运行以下查询来验证文件更改。

SELECT name, physical_name AS CurrentLocation, state_desc

FROM sys.master_files

WHERE database_id = DB_ID(N'<database_name>');


故障恢复过程

--------------------------------------------------------------------------------

如果由于硬件故障而必须移动文件,则请执行下列步骤,将文件重新定位到一个新位置。

重要说明重要提示:

如果数据库无法启动,即处于可疑模式下或处于未恢复状态,则只有 sysadmin 固定角色的成员才可以移动该文件。

 

1.如果启动了 SQL Server 实例,则将其停止。

2.通过在命令提示符下输入下列命令之一,在仅 master 恢复模式下启动 SQL Server 实例。

对于默认的 (MSSQLSERVER) 实例,请运行以下命令。

NET START MSSQLSERVER /f /T3608

对于命名实例,请运行以下命令。

NET START MSSQL$instancename /f /T3608

3.对于要移动的每个文件,请使用 sqlcmd 命令或 SQL Server Management Studio 运行以下语句。

ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' );

4.退出 sqlcmd 实用工具或 SQL Server Management Studio。

5.停止 SQL Server 实例。

6.将文件移动到新位置。

7.启动 SQL Server 实例。例如,运行 NET START MSSQLSERVER。

8.通过运行以下查询来验证文件更改。

SELECT name, physical_name AS CurrentLocation, state_desc

FROM sys.master_files

WHERE database_id = DB_ID(N'<database_name>');


引用:

  《MSDN》