SQL Server 2008移动系统数据库

SQL Server 2008移动系统数据库 

本主题说明如何在 SQL Server 中移动系统数据库。移动系统数据库在下列情况下可能很有用:

?故障恢复。例如,数据库处于可疑模式下或因硬件故障而关闭。


?计划的重定位。


?为预定的磁盘维护操作而进行的重定位。

 

下列过程适用于在同一 SQL Server 实例内移动数据库文件。若要将数据库移动另一个 SQL Server 实例中或另一台服务器上,请使用备份和还原或分离和附加操作。

本主题中的过程需要数据库文件的逻辑名称。若要获取该名称,请在 sys.master_files 目录视图中查询 name 列。


重要提示:
如果移动系统数据库并且随后重新生成 master 数据库,则必须再次移动系统数据库,因为重新生成操作会在默认位置安装所有系统数据库。有关重新生成 master 数据库的详细信息,请参阅如何从命令提示符安装 SQL Server 2008 中的“重新生成系统数据库、重新生成注册表”。

 

 

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


若要将移动系统数据库数据或日志文件的操作作为预先安排的重定位或预定的维护操作的一部分,请执行下列步骤。此过程适用于除 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_descFROM 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';
 


有关启用 Service Broker 的详细信息,请参阅 ALTER DATABASE (Transact-SQL)。


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

 


 故障恢复过程


如果由于硬件故障而必须移动文件,则请执行下列步骤,将文件重新定位到一个新位置。此过程适用于除 master 和 Resource 数据库以外的所有系统数据库。


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

 

 

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


2.通过在命令提示符下输入下列命令之一,在仅 master 恢复模式下启动 SQL Server 实例。在这些命令中指定的参数区分大小写。如果未按所示方式指定参数,则命令会失败。


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

 

 
 

NET START MSSQLSERVER /f /T3608
 

 

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

 

 
 

NET START MSSQL$instancename /f /T3608
 

 

有关详细信息,请参阅如何启动 SQL Server 实例(net 命令)。


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

 

 
 

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


有关使用 sqlcmd 实用工具的详细信息,请参阅使用 sqlcmd 实用工具。


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_descFROM sys.master_filesWHERE database_id = DB_ID(N'<database_name>');
 

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

 

 移动 master 数据库


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

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


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


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


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_descFROM sys.master_filesWHERE database_id = DB_ID('master');GO
 

 

 

 移动 Resource 数据库


在 SQL Server 2008 中,Resource 数据库的默认位置为 <驱动器>:\Program Files\Microsoft SQL Server\MSSQL10.<instance_name>\Binn\。可以移动该数据库;但是,建议您不要进行移动,这有两个原因:

?应用 SQL Server Service Pack 和修补程序可将该数据库还原到 \Binn 位置。


?如果将故障转移群集环境中的 Resource 数据库移到非群集位置,将导致故障转移群集失败。

 

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

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


2.通过在命令提示符下输入下列命令之一,在仅 master 恢复模式下启动 SQL Server 实例。在这些命令中指定的参数区分大小写。如果未按所示方式指定参数,则命令会失败。


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

 

 
 

NET START MSSQLSERVER /f /T3608
 

 

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

 

 
 

NET START MSSQL$instancename /f /T3608
 

 

有关详细信息,请参阅如何启动 SQL Server 实例(net 命令)。


3.使用 sqlcmd 命令或 SQL Server Management Studio,运行下列语句。更改 FILENAME 路径,以便与数据文件的新位置相匹配。不要更改数据库的名称或文件名。

 

 
 

ALTER DATABASE mssqlsystemresource MODIFY FILE (NAME=data, FILENAME= 'new_path_of_master\mssqlsystemresource.mdf');GOALTER DATABASE mssqlsystemresource MODIFY FILE (NAME=log, FILENAME= 'new_path_of_master\mssqlsystemresource.ldf');GO
 

 

4.将 mssqlsystemresource.mdf 和 mssqlsystemresource.ldf 文件移动到新位置。


5.通过运行以下语句,将 Resource 数据库设置为只读数据库。

 

 
 

ALTER DATABASE mssqlsystemresource SET READ_ONLY;
 

 

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


7.停止 SQL Server 实例。


8.重新启动 SQL Server 实例。

 


 示例


A. 移动 tempdb 数据库

以下示例将 tempdb 数据和日志文件移动到一个新位置,作为预先安排的重定位的一部分。


注意:
由于每次启动 SQL Server 实例时都将重新创建 tempdb,所以不必实际移动数据和日志文件。当服务在步骤 3 中重新启动时,将在新位置中创建这些文件。在重新启动服务之前,tempdb 将继续使用现有位置中的数据和日志文件。

 

 

1.确定 tempdb 数据库的逻辑文件名称以及在磁盘上的当前位置。

 

 
 

SELECT name, physical_name AS CurrentLocationFROM sys.master_filesWHERE database_id = DB_ID(N'tempdb');GO
 

 

2.使用 ALTER DATABASE 更改每个文件的位置。


 
 

USE master;GOALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');GOALTER DATABASE tempdb MODIFY FILE (NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf');GO
 

 

3.停止再重新启动 SQL Server 的实例。


4.验证文件更改。

 

 
 

SELECT name, physical_name AS CurrentLocation, state_descFROM sys.master_filesWHERE database_id = DB_ID(N'tempdb');
 

 

5.将 tempdb.mdf 和 templog.ldf 文件从其原始位置删除。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值