A. 移动 tempdb 数据库
下面的示例将tempdb数据和日志文件移动到一个新位置,作为预先安排的重定位的一部分。
注意
由于每次启动 SQL Server 实例时都将重新创建 tempdb,所以不必实际移动数据和日志文件。在步骤 3 中重新启动服务时,将在新位置中创建这些文件。在重新启动服务之前,tempdb 将继续使用现有位置中的数据和日志文件。
确定tempdb数据库的逻辑文件名称以及在磁盘上的当前位置。
SELECT name, physical_name AS CurrentLocation
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');
GO
使用ALTER DATABASE更改每个文件的位置。
USE master;
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');
GO
ALTER DATABASE tempdb
MODIFY FILE (NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf');
GO
停止再重新启动 SQL Server 的实例。
验证文件更改。
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'tempdb');
将tempdb.mdf和templog.ldf文件从其原始位置删除。
在 SQL Server 中,通过在ALTER DATABASE语句的 FILENAME 子句中指定新的文件位置,可以将用户数据库中的数据、日志和全文目录文件移动到新位置。此方法适用于在同一 SQL Server 实例中移动数据库文件。若要将数据库移动到另一个 SQL Server
实例或另一台服务器上,请使用备份和还原或分离和附加操作。
注意
SQL Server 数据库引擎的某些功能改变了数据库引擎在数据库文件中存储信息的方式。这些功能仅限于特定的 SQL Server 版本。不能将包含这些功能的数据库移到不支持这些功能的 SQL Server 版本。使用 sys.dm_db_persisted_sku_features 动态管理视图可列出当前数据库中启用的所有特定于版本的功能。
USE AdventureWorks2008R2 ;
CREATE FULLTEXT CATALOG AdvWksFtCat AS DEFAULT ;
GO
USE master ;
GO
--Detach the AdventureWorks2008R2 database.
sp_detach_db AdventureWorks2008R2 ;
GO
--Physically move the full-text catalog to the new location.
--Attach the AdventureWorks2008R2 database and specify the new location of the full-text catalog.
CREATE DATABASE AdventureWorks2008R2 ON
(FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_Data.mdf'),
(FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_log.ldf'),
(FILENAME = 'c:\myFTCatalogs\AdvWksFtCat') FOR ATTACH ;
GO
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'AdventureWorks2008R2')
AND type_desc = N'LOG' ;
GO
ALTER DATABASE AdventureWorks2008R2 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 AdventureWorks2008R2
MODIFY FILE ( NAME = AdventureWorks2008R2_Log,
FILENAME = 'C:\NewLoc\AdventureWorks2008R2_Log.ldf') ;
GO
ALTER DATABASE AdventureWorks2008R2 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'AdventureWorks2008R2')
AND type_desc = N'LOG' ;