SQL Server重命名数据库和附加文件

SQL Server重命名数据库和附加文件,sql,sql-server,database,Sql,Sql Server,Database,有没有一种简单的方法可以用一个SQL脚本重命名数据库及其'mdf'和'log'文件 我使用以下脚本进行重命名: use [master] ALTER DATABASE [sampleDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE ALTER DATABASE [sampleDB] MODIFY NAME = [newSampleDB] ALTER DATABASE [newSampleDB] SET MULTI_USER GO 但是,这不会处理以

有没有一种简单的方法可以用一个SQL脚本重命名数据库及其
'mdf'
'log'
文件

我使用以下脚本进行重命名:

use [master]
ALTER DATABASE [sampleDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE    
ALTER DATABASE [sampleDB] MODIFY NAME = [newSampleDB]
ALTER DATABASE [newSampleDB] SET MULTI_USER
GO
但是,这不会处理以旧名称命名的
'mdf'
'log'
文件,如果我要创建一个名为
sampleDB
的新数据库,这些文件将发生冲突

有什么好的方法可以将文件与数据库一起重命名吗?

您可以使用它在操作系统级别重命名文件。你必须在使用它之前

alter database oldDBName set offline
go

declare @cmd1 varchar(4000)
declare @cmd2 varchar(4000)

select @cmd1 = 'rename D:\path_to_file\oldDBName.mdf newDBName.mdf'
select @cmd2 = 'rename D:\path_to_file\oldDBName_log.ldf newDBName_log.ldf'
exec xp_cmdshell @cmd1
exec xp_cmdshell @cmd2
go

alter database oldDBName modify file (name = oldDBName, filename = 'D:\path_to_file\newDBName.mdf')
alter database oldDBName modify file (name = oldDBName_log, filename = 'D:\path_to_file\newDBName_log.ldf')
go

alter database oldDBName set online
你可以点击这个链接