[Sitecore][Back Up DB]サイトコアDBのバックアップ

今日はサイトコアのデータベースバックアップについて書きます。

普段の作業でサイトコアサイトは五つのデーだベースがあります。(Core, Master, Web, WFFM, Analytics)これにカスタムのデーだベースを加え、一つのサイトは六個のデーだベースになります。サイトをパックアップまたリストーアはSQL Server Management Studioのユーザインタェースタスクにてすればいいです。先週、会社から新しいPCをもらい、既存のサイトを新しいPCへ移しなければなりません。ざっと見れば、120以上のデータベースをバックアップ/リストーアをしなければなりません。これをManagement Studioのユーザインタフェースタスクでやれば、かなり時間がかあるので、SQLクエリを使うことにした。今回はデータベースを移すためのSQLクエリを纏めました。

データベースバックアップ

DECLARE @DBList VARCHAR(MAX)
SELECT @DBList = COALESCE(@DBList+',' ,'') + Name
FROM master.dbo.sysdatabases
WHERE [name] LIKE '%local%'
print @DBList

USE [master];
DECLARE @SQL nvarchar(255)
, @Pos INT
, @Loop BIT
, @vcDBName VARCHAR(64)
, @vcDBNames VARCHAR(1024)
, @vcBackupFileRoot varchar(125)

SET @vcBackupFileRoot = '''C:\SQL\BackupRoot\' + CONVERT(NVARCHAR(10), GETDATE(), 102) + '_'
SET @vcDBNames = @DBList

SELECT @Loop = CASE WHEN LEN(@vcDBNames) > 0 THEN 1 ELSE 0 END
WHILE (SELECT @Loop) = 1
BEGIN
SELECT @Pos = CHARINDEX(',', @vcDBNames, 1)
IF @Pos > 0
BEGIN
SELECT @vcDBName = SUBSTRING(@vcDBNames, 1, @Pos - 1)
SELECT @vcDBNames = SUBSTRING(@vcDBNames, @Pos + 1, LEN(@vcDBNames) - @Pos)
print 'Backup up DB:' + @vcDBName
SET @SQL = 'BACKUP DATABASE ' + @vcDBName + ' TO DISK =' + @vcBackupFileRoot + @vcDBName + '.bak'''; EXEC (@SQL)
END
ELSE
BEGIN
SELECT @vcDBName = @vcDBNames
SELECT @Loop = 0
print 'Backup up DB:' + @vcDBName
SET @SQL = 'BACKUP DATABASE ' + @vcDBName + ' TO DISK =' + @vcBackupFileRoot + @vcDBName + '.bak'''; EXEC (@SQL)
END
END

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です