SQL Server의 여러 데이터베이스 통합 백업
8968 단어 SQL Servertech
TL;DR
스크립트 내용 설명
D:\IKOU
폴더로 출력하려고 합니다.name NOT IN ('master', 'msdb', 'model', 'tempdb', 'Resource', 'xstoredb')
섹션에서 백업 객체에서 제외할 데이터베이스를 지정합니다.현재 시스템 데이터베이스를 가정합니다.각본
SET NOCOUNT ON
USE [master]
GO
DECLARE @name sysname
DECLARE @SQL nvarchar(500)
DECLARE @BACKUPFILE nvarchar(500)
DECLARE @BACKUPNAME nvarchar(500)
DECLARE @BACKUPERRORMESSAGE nvarchar(500)
DECLARE @INSTANCENAME nvarchar(50)
DECLARE @backupSetId as int
SET @INSTANCENAME = convert(nvarchar(50), SERVERPROPERTY('instancename'))
SELECT * INTO [#databases] FROM [sys].[databases] WHERE state_desc <> 'OFFLINE' AND name NOT IN ('master', 'msdb', 'model', 'tempdb', 'Resource', 'xstoredb')
DECLARE [table_cursor] CURSOR FOR
SELECT [name] FROM [#databases]
OPEN [table_cursor]
FETCH NEXT FROM [table_cursor] INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @BACKUPFILE = N'D:\IKOU\' + @INSTANCENAME + '_' + @name + '.bak'
SET @BACKUPNAME = @name + N' 完全 データベース バックアップ'
SET @BACKUPERRORMESSAGE = N'確認に失敗しました。データベース ''' + @name + ''' のバックアップ情報が見つかりません。'
SET @SQL = N'BACKUP DATABASE [' + @name + '] TO DISK = ''' + @BACKUPFILE + ''' WITH NOFORMAT, INIT, NAME = ''' + @BACKUPNAME + ''', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 10'
EXECUTE sp_executesql @SQL
select @backupSetId = position from msdb..backupset where database_name=@name and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=@name )
if @backupSetId is null begin raiserror(@BACKUPERRORMESSAGE, 16, 1) end
RESTORE VERIFYONLY FROM DISK = @BACKUPFILE WITH FILE = @backupSetId, NOUNLOAD, NOREWIND
FETCH NEXT FROM [table_cursor] INTO @name
END
CLOSE [table_cursor]
DEALLOCATE [table_cursor]
Reference
이 문제에 관하여(SQL Server의 여러 데이터베이스 통합 백업), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/tfukumori/articles/b273f81fb9fb0407ca63텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)