2007~2011/SQL Server2009.06.11 00:01
기존 연결된 세션을 롤백하고 데이터베이스 이름을 '데이터베이스이름_YYYYMMDD' 형식으로 변경하는 스크립트를 아래와 같이 작성하였습니다. 필요하시면 환경에 따라 수정해서 사용하면 되겠습니다. 


[사용방법]
EXEC master..up_RENAME_DATABASE '데이터베이스 이름'

예를 들어 LAIGO 데이터베이스가 있을 경우,
EXEC master..up_RENAME_DATABASE 'LAIGO' 라고 수행하면 데이터베이스 이름이 'LAIGO_20090610' 으로 변경됩니다. 


[스크립트]
USE [master]
GO

/*-------------------------------------------------------------------------------------------------------
스크립트 정보 : 기존 세션을 제거한 후 데이터베이스 이름을 데이터베이스이름_YYYYMMDD로 변경하는 스크립트 
작성자 : Lai Go
작성일자 : 2009.06.10
실행방법 : EXEC master..up_RENAME_DATABASE '데이터베이스 이름'
-------------------------------------------------------------------------------------------------------*/

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROC [dbo].[up_RENAME_DATABASE]
@userDBName sysname
AS
SET NOCOUNT ON


DECLARE @newDBName Varchar(50)
, @sufFix Varchar(8)


        -- 오늘 날짜를 YYYYMMDD 포맷으로 반환 
SET @sufFix = convert(char(8), getdate(), 112)
SET @newDBName = @userDBName + '_' + @sufFix

-- SESSION ROLLBACK 
EXEC('ALTER DATABASE '+@userDBName+' SET SINGLE_USER WITH ROLLBACK IMMEDIATE')

-- RENAME 
BEGIN TRY
EXEC sp_renamedb @userDBName, @newDBName
END TRY
BEGIN CATCH
EXEC('ALTER DATABASE ' + @userDBName + ' SET MULTI_USER')
END CATCH

-- MultiUser 전환
EXEC('ALTER DATABASE ' + @newDBName + ' SET MULTI_USER')


SET NOCOUNT OFF



[참고자료]

작성자 : Lai Go / 작성일자 : 2009.06.10 
Posted by Lai Go