移动用户数据库
更新日期: 2005 年 12 月 5 日
在 SQL Server 2005 中,通过在 ALTER DATABASE 语句的 FILENAME 子句中指定新的文件位置,可以将用户数据库中的数据、日志和全文目录文件移动到新位置。此方法适用于在同一 SQL Server 实例中移动数据库文件。若要将数据库移动到另一个 SQL Server 实例或另一台服务器上,请使用备份和还原或分离和附加操作。
本主题中的过程需要数据库文件的逻辑名称。若要获取该名称,请在 sys.master_files 目录视图中查询 name 列。
注意: |
---|
将数据库移动到另一个服务器实例上时,若要为用户和应用程序提供一致的体验,您可能需要为数据库重新创建部分或全部元数据。有关详细信息,请参阅当数据库在其他服务器实例上可用时管理元数据。 |
计划的重定位过程
若要将移动数据或日志文件作为计划的重定位的一部分,请执行下列步骤:
运行以下语句。
ALTER DATABASE database_name SET OFFLINE
将文件移动到新位置。
对于已移动的每个文件,请运行以下语句。
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' )
运行以下语句。
ALTER DATABASE database_name SET ONLINE
通过运行以下查询来验证文件更改。
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
计划的磁盘维护的重定位
若要将重定位文件作为计划的磁盘维护过程的一部分,请执行下列步骤:
对于要移动的每个文件,请运行以下语句。
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
停止 SQL Server 实例或关闭系统以执行维护。有关详细信息,请参阅停止服务。
将文件移动到新位置。
重新启动 SQL Server 实例或服务器。有关详细信息,请参阅启动和重新启动服务。
通过运行以下查询来验证文件更改。
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
故障恢复过程
如果由于硬件故障而必须移动文件,则请执行下列步骤,将文件重新定位到一个新位置。
重要提示: |
---|
如果数据库无法启动,即处于可疑模式下或处于未恢复状态,则只有 sysadmin 固定角色的成员才可以移动该文件。 |
如果启动了 SQL Server 实例,则将其停止。
通过在命令提示符下输入下列命令之一,在仅 master 恢复模式下启动 SQL Server 实例。
对于默认的 (MSSQLSERVER) 实例,请运行以下命令。
NET START MSSQLSERVER /f /T3608
对于命名实例,请运行以下命令。
NET START MSSQL$instancename /f /T3608
有关详细信息,请参阅如何启动 SQL Server 实例(net 命令)。
对于要移动的每个文件,请使用 sqlcmd 命令或 SQL Server Management Studio 运行以下语句。
ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
有关如何使用 sqlcmd 实用工具的详细信息,请参阅使用 sqlcmd 实用工具。
退出 sqlcmd 实用工具或 SQL Server Management Studio。
停止 SQL Server 实例。
将文件移动到新位置。
启动 SQL Server 实例。例如,运行
NET START MSSQLSERVER
。通过运行以下查询来验证文件更改。
SELECT name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID(N'<database_name>');
移动全文目录
若要移动全文目录,请执行下列步骤。请注意,指定新的目录位置时,只指定 new_path
,而不是指定 new_path/os_file_name
。
运行以下语句。
ALTER DATABASE database_name SET OFFLINE
将全文目录移动到新位置。
运行下列语句,其中:
logical
_name
是 sys.database_files 中 name 列的值,new
_path
是目录的新位置。ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path')
运行以下语句。
ALTER DATABASE database_name SET ONLINE
另外,也可以使用 CREATE DATABASE 语句的 FOR ATTACH 子句移动全文目录。下面的示例在 AdventureWorks
数据库中创建一个全文目录。若要将全文目录移动到新位置,请分离 AdventureWorks
数据库,并将全文目录从物理意义上移动到新位置。然后附加数据库,并指定全文目录的新位置。
USE AdventureWorks;
CREATE FULLTEXT CATALOG AdvWksFtCat AS DEFAULT;
GO
USE master;
GO
--Detach the AdventureWorks database.
sp_detach_db AdventureWorks;
GO
--Physically move the full-text catalog to the new location.
--Attach the AdventureWorks database and specify the new location of the full-text catalog.
CREATE DATABASE AdventureWorks ON
(FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf'),
(FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_log.ldf'),
(FILENAME = 'c:\myFTCatalogs\AdvWksFtCat')
FOR ATTACH;
GO
示例
下面的示例将 AdventureWorks
日志文件移动到一个新位置,作为计划的重定位的一部分。
USE master;
GO
-- Return the logical file name.
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'AdventureWorks')
AND type_desc = N'LOG';
GO
ALTER DATABASE AdventureWorks SET OFFLINE;
GO
-- Physically move the file to a new location.
-- In the following statement, modify the path specified in FILENAME to
-- the new location of the file on your server.
ALTER DATABASE AdventureWorks
MODIFY FILE ( NAME = AdventureWorks_Log,
FILENAME = 'C:\NewLoc\AdventureWorks_Log.ldf');
GO
ALTER DATABASE AdventureWorks SET ONLINE;
GO
--Verify the new location.
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'AdventureWorks')
AND type_desc = N'LOG';
请参阅
概念
其他资源
ALTER DATABASE (Transact-SQL)
CREATE DATABASE (Transact-SQL)
修改数据库
移动数据库文件
BACKUP (Transact-SQL)
RESTORE (Transact-SQL)
启动和重新启动服务
帮助和信息
更改历史记录
发布日期 | 历史记录 |
---|---|
2005 年 12 月 5 日 |
|