将 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数据库中