将 SQL 数据库文件 MDF 和 LDF 移动到新位置

Posted

技术标签:

【中文标题】将 SQL 数据库文件 MDF 和 LDF 移动到新位置【英文标题】:Move SQL Database Files MDF & LDF to New Location 【发布时间】:2015-01-08 16:01:53 【问题描述】:

环境:

SQL Server 2008 R2 数据库未接收到活动事务。

在生产环境中,我需要将 MDF 和 LDF 文件移动到新驱动器。由于我有一个时间窗口来停止活动事务,我想我可以只备份数据库,然后在将文件组配置到新位置时恢复它。

我认为这比使用新文件名分离和重新附加数据库要好得多。

由于我是新手,想在这里咨询专家。非常感谢任何建议/建议。

【问题讨论】:

Moving a SQL Server database to a new server的可能重复 【参考方案1】:

这是一个简单的例子。它假定您的数据库有一个.mdf(数据)文件和一个.ldf(日志)文件。我将以[model]数据库为例。

--First, make note of the current location of the db files.
--Copy and paste the physical_names somewhere.  Trust me, if you forget 
--where the files were originally, this will save you some heartache.
SELECT d.name, f.name, f.physical_name
FROM master.sys.master_files f
JOIN master.sys.databases d
    ON d.database_id = f.database_id
WHERE d.name = 'model'  --Replace with the name of your db.

--Now set the new file paths.  
--You can run the ALTER DATABASE statements while the db is online.

--Run once for the mdf/data file.
ALTER DATABASE [model]  --Replace with the name of your db.
MODIFY FILE 
(
    NAME = 'modeldev',  --this is the "logical" file name.
    FILENAME = 'D:\SqlData\model.mdf'  --Replace with the new path\filename.
)

--Run once for the ldf/data file.
ALTER DATABASE [model]  --Replace with the name of your db.
MODIFY FILE 
(
    NAME = 'modellog',
    FILENAME = 'D:\SqlData\modellog.ldf'  --Replace with the new path\filename.
)


--When business rules allow, take the db OFFLINE.
ALTER DATABASE [model]  --Replace with the name of your db.
SET OFFLINE

--Move the physical db files to the new location on disk.

--Bring the db back ONLINE to complete the task.
ALTER DATABASE [model]  --Replace with the name of your db.
SET ONLINE

【讨论】:

当一切都发生在同一个 SQL Server 实例上时,我更喜欢这种方法而不是备份/恢复。涉及的 I/O 应该更少。分离/重新连接方法应该也可以工作,尽管我认为 MS 说该方法将被弃用......

以上是关于将 SQL 数据库文件 MDF 和 LDF 移动到新位置的主要内容,如果未能解决你的问题,请参考以下文章

我想要把sql serve2000的mdf ldf文件升级到能在sql2012中用 求大神帮忙转换

SQL2000的数据库文件后缀是.mdf和.ldf文件能用啥方法直接下载下来?

在sql2000中创建的备份mdf、 ldf文件怎么样导入到mysql数据库或oracle数据库中

你好,请问SQL的master.mdf和mastlog.ldf 拒绝访问 解决办法

sql server 2008如何导入mdf,ldf文件

MS SQL Server 从 MDF 和 LDF 恢复数据库不显示最新数据