SQL Server 修改数据库名及物理数据文件名
一、背景介绍
当前有一 SQL Server 数据库,数据库名称为 study ,现需将该数据库名称修改为 studyold ,并同时根据新用户名修改物理数据文件的名称。
二、操作步骤
2.1 设置为单用户模式(断开连接)
USE master;
ALTER DATABASE study SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
2.2 修改数据库名称
ALTER DATABASE study MODIFY NAME = studyold;
2.3 查找逻辑文件名
USE sdcpold
SELECT name AS LogicalName, physical_name AS PhysicalName
FROM sys.master_files
WHERE database_id = DB_ID(N'studyold');
逻辑文件名和当前物理路径记录如下:
逻辑文件名:study、study_log
物理路径:D:\Program Files\Microsoft SQL Server\MSSQL15.GPMQAS01\MSSQL\DATA\study.mdf、
D:\Program Files\Microsoft SQL Server\MSSQL15.GPMQAS01\MSSQL\DATA\study_log.ldf
2.4 关闭数据库(detach)
USE master;
EXEC sp_detach_db @dbname = N'studyold';
2.5 手动重命名物理文件(操作系统层)
2.6 重新附加数据库(attach)并更改逻辑文件名
CREATE DATABASE [studyold] ON
(FILENAME = N'D:\Program Files\Microsoft SQL Server\MSSQL15.GPMQAS01\MSSQL\DATA\studyold.mdf'
),
(FILENAME = N'D:\Program Files\Microsoft SQL Server\MSSQL15.GPMQAS01\MSSQL\DATA\studyold_log.ldf'
)
FOR ATTACH;
2.7 修改逻辑文件名(可选但推荐)
ALTER DATABASE sdcpold MODIFY FILE (NAME = study, NEWNAME = studyold);
ALTER DATABASE sdcpold MODIFY FILE (NAME = study_log, NEWNAME = studyold_log);
2.8 查找逻辑文件名
USE studyold
SELECT name AS LogicalName, physical_name AS PhysicalName
FROM sys.master_files
WHERE database_id = DB_ID(N'studyold');
逻辑文件名和当前物理路径记录如下:
逻辑文件名:studyold、studyold_log
物理路径:D:\Program Files\Microsoft SQL Server\MSSQL15.GPMQAS01\MSSQL\DATA\studyold.mdf、
D:\Program Files\Microsoft SQL Server\MSSQL15.GPMQAS01\MSSQL\DATA\studyold_log.ldf
2.9 设置为多用户模式
ALTER DATABASE studyold SET MULTI_USER;