最佳实践--重命名数据库

来源:互联网 发布:阿里云挂载数据盘设置 编辑:程序博客网 时间:2024/05/30 04:56

前言


我在很多客户那里就遇到过数据库名字是DB2017,逻辑文件名,和物理文件名字还是DB2016,等等各种各样的名字都有,在后续操作的时候很容易产生误导.因为大家平时最经常使用的就是sp_renamedb ,或者是在SSMS工具中右键进行重命名。这样操作简单,快捷。但是有一个问题就是对应的mdf,ldf文件名字不会跟着改变.而且数据库的逻辑文件名也不会跟着改变。

问题


我们用如下脚本重命名数据库:

USE master
GO
ALTER DATABASE Mydb
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE
GO
EXEC master..sp_renamedb 'Mydb','MydbNew'
GO
ALTER DATABASE MydbNew
SET MULTI_USER
GO


查看数据库的文件名:
SELECT
name AS [Logical Name],
physical_name AS [DB File Path],
type_desc AS [File Type],
state_desc AS [State]
FROM sys.master_files
WHERE database_id = DB_ID(N'MydbNew')

可以看到数据库文件名字和物理文件名字,还是之前的Mydb.


最佳实践



1,我们需要修改数据库的逻辑文件名字

ALTER DATABASE Mydb SET SINGLE_USER WITH ROLLBACK IMMEDIATE

ALTER DATABASE [Mydb] MODIFY FILE (NAME=N'Mydb', NEWNAME=N'MydbNew')
GO
ALTER DATABASE [Mydb] MODIFY FILE (NAME=N'Mydb_log', NEWNAME=N'MydbNewlog')
GO

2.修改物理文件名字
1.分离数据库

USE [master]GOEXEC master.dbo.sp_detach_db @dbname = N'Mydb'GO

2.修改物理文件名字

找到上面文件的路径,对他进行重命名

3.附加数据库.
USE [master]GOCREATE DATABASE MydbNew ON ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MydbNew.mdf' ),( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\MydbNew_log.ldf' )    FOR ATTACHGO



4.设置为多用户
ALTER DATABASE MydbNew SET MULTI_USER


5.检查




总结

修改数据库名字是一个很常见的操作,直接改名很容易,但是可能会以后留下隐患。


原创粉丝点击