一、修改数据库名(逻辑名称)
方法1:使用系统存储过程
-- 1. 设置数据库为单用户模式(防止其他连接)
ALTER DATABASE [原数据库名] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-- 2. 修改数据库名称
ALTER DATABASE [原数据库名] MODIFY NAME = [新数据库名];
-- 3. 恢复多用户模式
ALTER DATABASE [新数据库名] SET MULTI_USER;
方法2:使用图形界面
SSMS中右键数据库 → 重命名
输入新名称 → 确定
二、修改物理文件名(包括数据文件和日志文件)
步骤1:分离数据库(确保没有活动连接)
-- 设置为单用户模式
ALTER DATABASE [数据库名] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-- 分离数据库
USE master;
EXEC sp_detach_db @dbname = N'数据库名', @skipchecks = 'true';
步骤2:重命名物理文件
到文件系统找到数据库文件(.mdf和.ldf文件)
手动重命名文件(例如:
OldDB.mdf →
NewDB.mdf)
步骤3:重新附加数据库(使用新文件名)
-- 使用新的物理文件名附加
USE master;
CREATE DATABASE [数据库名]
ON (FILENAME = N'D:\SQLData\NewDB.mdf'),
(FILENAME = N'D:\SQLLog\NewDB_log.ldf')
FOR ATTACH;
三、同时修改数据库名和物理文件名(推荐完整步骤)
-- 步骤1:查看当前文件信息
USE [原数据库名];
SELECT name, physical_name FROM sys.database_files;
-- 步骤2:设置单用户模式
ALTER DATABASE [原数据库名] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-- 步骤3:修改数据库逻辑名
ALTER DATABASE [原数据库名] MODIFY NAME = [新数据库名];
-- 步骤4:修改物理文件逻辑名(在数据库内部)
USE [新数据库名];
ALTER DATABASE [新数据库名] MODIFY FILE (NAME = 原逻辑文件名, NEWNAME = 新逻辑文件名);
-- 步骤5:分离数据库
USE master;
EXEC sp_detach_db @dbname = N'新数据库名';
-- 步骤6:手动重命名物理文件(在文件资源管理器中操作)
-- 步骤7:使用新物理文件名重新附加
CREATE DATABASE [新数据库名]
ON (FILENAME = N'新物理文件路径\新物理文件名.mdf'),
(FILENAME = N'新物理文件路径\新物理文件名_log.ldf')
FOR ATTACH;
-- 步骤8:恢复多用户模式
ALTER DATABASE [新数据库名] SET MULTI_USER;
四、使用简单方法(仅修改逻辑名不移动文件)
如果只需要修改数据库逻辑名,但保留物理文件名不变:
ALTER DATABASE [OldDBName] MODIFY NAME = [NewDBName];
五、注意事项
备份数据:操作前务必备份数据库
权限要求:需要sysadmin或dbcreator角色权限
连接中断:修改过程中会中断所有现有连接
依赖对象检查:确保没有存储过程、作业等依赖原数据库名
文件路径权限:确保SQL Server服务账户对新路径有读写权限
空间检查:确保新磁盘位置有足够空间
六、验证修改结果
-- 检查数据库名
SELECT name FROM sys.databases WHERE name = '新数据库名';
-- 检查物理文件信息
USE [新数据库名];
SELECT
name AS [逻辑文件名],
physical_name AS [物理文件路径],
type_desc AS [文件类型]
FROM sys.database_files;
七、使用T-SQL脚本完整示例
-- 假设将DB_Old改为DB_New,物理文件从DB_Old.mdf改为DB_New.mdf
-- 1. 查看原始信息
USE DB_Old;
SELECT name, physical_name FROM sys.database_files;
-- 2. 设为单用户模式
ALTER DATABASE DB_Old SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
-- 3. 修改逻辑数据库名
ALTER DATABASE DB_Old MODIFY NAME = DB_New;
-- 4. 修改逻辑文件名
USE DB_New;
ALTER DATABASE DB_New MODIFY FILE (NAME = DB_Old, NEWNAME = DB_New);
ALTER DATABASE DB_New MODIFY FILE (NAME = DB_Old_log, NEWNAME = DB_New_log);
-- 5. 分离数据库
USE master;
EXEC sp_detach_db @dbname = N'DB_New';
-- 6. [手动操作]:在文件系统中重命名物理文件
-- 7. 重新附加
CREATE DATABASE DB_New
ON (FILENAME = N'C:\Data\DB_New.mdf'),
(FILENAME = N'C:\Data\DB_New_log.ldf')
FOR ATTACH;
-- 8. 恢复多用户
ALTER DATABASE DB_New SET MULTI_USER;
选择哪种方法取决于实际需求:如果只需修改显示名称,使用方法一;如果需要整理文件结构,使用完整方法。