是否有一种简单的方法可以使用单个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
的新数据库,则文件会发生冲突
有没有什么好的解决方案可以将文件与数据库一起重命名?
答案 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