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

时间:2018-02-26 05:56:53

标签: sql sql-server database

是否有一种简单的方法可以使用单个SQL脚本重命名数据库,'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文件,如果我要创建一个名为class Property < ApplicationRecord has_many :listings end class Listing < ApplicationRecord belongs_to :property end 的新数据库,则文件会发生冲突

有没有什么好的解决方案可以将文件与数据库一起重命名?

1 个答案:

答案 0 :(得分:1)

您可以使用xp_cmdshell重命名操作系统级别的文件。在使用之前,您必须enable

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