보고서 서버 데이터베이스를 다른 컴퓨터로 이동(SSRS 기본 모드)
적용 대상: SSRS(SQL Server Reporting Services) 기본 모드
SQL Server 설치 시 사용하는 보고서 서버 데이터베이스를 다른 컴퓨터에 있는 인스턴스로 이동할 수 있습니다.
SQL Server는 데이터베이스를 이동하기 위한 몇 가지 방법을 제공합니다.
- 분리하고 연결합니다. 이 방법은 보고서 서버 데이터베이스를 이동하는 가장 쉬운 방법을 제공하지만 데이터베이스를 분리하는 동안 보고서 서버를 오프라인으로 전환해야 합니다.
- 백업 및 복원. 이 방법은 서비스 중단을 최소화하지만 작업을 수행하려면 Transact-SQL(T-SQL) 명령을 실행해야 합니다.
- 복사. 데이터베이스 복사 마법사를 사용하는 경우에는 데이터베이스 복사를 권장하지 않습니다. 데이터베이스의 사용 권한 설정은 유지되지 않습니다.
이 문서에서는 분리 및 연결 방법 및 백업 및 복원 방법을 사용하는 방법을 보여 줍니다.
필수 조건
- SQL Server 설치에 사용되는 구성된 기본 모드 보고서 서버입니다.
- 다른 컴퓨터에 있는 SQL Server의 인스턴스입니다.
데이터베이스 이동 준비
보고서 서버 데이터베이스를 이동할 때 다음 사항에 유의하세요.
- reportserver 및 reportservertempdb 데이터베이스를 함께 이동하거나 복사해야 합니다. SSRS 설치에는 두 데이터베이스가 모두 필요합니다.
- 임시 데이터베이스의 이름은 주 보고서 서버 데이터베이스의 이름과 동일해야 하지만 tempdb 접미사가 있어야 합니다.
- 데이터베이스를 이동해도 현재 보고서 서버 항목에 대해 정의된 예약된 작업은 변경되지 않습니다.
- 보고서 서버 서비스를 처음 다시 시작할 때 일정이 다시 만들어집니다.
- 일정을 트리거하는 데 사용되는 SQL Server 에이전트 작업은 새 데이터베이스 인스턴스에서 다시 만들어집니다. 작업을 새 컴퓨터로 이동할 필요는 없지만 현재 컴퓨터에서 더 이상 사용되지 않는 작업을 삭제할 수 있습니다.
- 구독, 캐시된 보고서 및 스냅샷은 이동된 데이터베이스에 유지됩니다. 데이터베이스를 이동한 후 스냅샷이 새로 고친 데이터를 선택하지 않는 경우 스냅샷 옵션을 선택 취소합니다. 그런 다음 적용을 선택하여 변경 내용을 저장하고 일정을 다시 만든 다음 적용을 다시 선택하여 변경 내용을 저장합니다.
- 임시 데이터베이스에 저장된 임시 보고서 및 사용자 세션 데이터는 해당 데이터베이스를 이동할 때 유지됩니다.
Important
이 문서의 단계는 보고서 서버 데이터베이스의 재배치가 기존 설치에 대한 유일한 변경 사항인 경우 권장됩니다. 전체 SSRS 설치를 마이그레이션하는 경우 연결을 다시 구성하고 암호화 키를 다시 설정해야 합니다. 예를 들어 데이터베이스를 이동하고 데이터베이스를 사용하는 보고서 서버 Windows 서비스의 ID를 변경할 때 이러한 단계가 필요합니다.
보고서 서버 데이터베이스 분리 및 연결
보고서 서버를 오프라인으로 전환할 수 있는 경우 분리 및 연결 방법을 사용할 수 있습니다. 특히 현재 SQL Server 인스턴스에서 데이터베이스를 분리합니다. 그런 다음 이를 이동하고 사용하려는 인스턴스에 연결합니다. 이 방법은 데이터베이스의 사용 권한을 유지합니다.
데이터베이스를 이동시킨 후 보고서 서버 연결을 보고서 서버 데이터베이스로 다시 구성해야 합니다. 스케일 아웃 배포를 실행하는 경우 배포의 각 보고서 서버에 대한 보고서 서버 데이터베이스 연결을 다시 구성해야 합니다.
분리 및 연결 방법을 사용하려면 다음 섹션의 단계를 수행합니다.
데이터베이스 분리
보고서 서버 구성 관리자를 엽니다.
암호화 키 페이지를 사용하여 이동하려는 보고서 서버 데이터베이스에 대한 암호화 키를 백업합니다.
보고서 서버 상태 페이지를 사용하여 보고서 서버 서비스를 중지합니다.
SQL Server Management Studio를 열고 보고서 서버 데이터베이스를 호스트하는 SQL Server 인스턴스에 연결합니다.
보고서 서버 데이터베이스를 마우스 오른쪽 단추로 클릭하고 작업을 선택한 다음 분리를 선택합니다. 보고서 서버 임시 데이터베이스에 대해 이 단계를 반복합니다.
데이터베이스 연결
현재 SQL Server 인스턴스에 대한 .mdf 및 .ldf 파일을 찾습니다. 데이터 폴더에 있습니다.
.mdf 및 .ldf 파일을 사용하려는 SQL Server 인스턴스의 데이터 폴더로 복사하거나 이동합니다. 두 개의 데이터베이스를 이동 중이므로 네 개의 파일을 모두 이동시키거나 복사해야 합니다.
SQL Server Management Studio에서 보고서 서버 데이터베이스를 호스트하는 새 SQL Server 인스턴스에 대한 연결을 엽니다.
데이터베이스 노드를 마우스 오른쪽 단추로 클릭한 다음 연결을 선택합니다.
추가를 선택하고 연결할 보고서 서버 데이터베이스 .mdf 및 .ldf 파일을 선택합니다. 보고서 서버 임시 데이터베이스에 대해 이 단계를 반복합니다.
구성 완료
연결 한 데이터베이스에 RSExecRole 역할이 있는지 확인합니다. 보고서 서버 데이터베이스 테이블에 대한 선택, 삽입, 업데이트, 삭제 및 참조 권한에 대해 RSExecRole을 구성하고 저장 프로시저에 대한 권한을 실행해야 합니다. 자세한 내용은 RSExecRole 만들기를 참조하세요.
보고서 서버 구성 관리자를 시작하고 보고서 서버에 대한 연결을 엽니다.
데이터베이스 페이지에서 새 SQL Server 인스턴스를 선택한 다음 연결을 선택합니다.
방금 이동한 보고서 서버 데이터베이스를 선택한 다음 적용을 선택합니다.
암호화 키 페이지에서 복원을 선택합니다. 키의 백업 복사본을 포함하는 파일 및 파일 잠금을 해제하는 비밀번호를 지정합니다.
보고서 서버 서비스를 다시 시작합니다.
보고서 서버 데이터베이스 백업 및 복원
보고서 서버를 오프라인으로 전환할 수 없는 경우 백업 및 복원 방법을 사용하여 보고서 서버 데이터베이스를 재배치할 수 있습니다. 이 방법을 사용하려면 T-SQL 문을 사용해야 합니다.
다음 섹션의 단계에서는 데이터베이스를 백업 및 복원하는 방법과 새 서버 인스턴스에서 데이터베이스를 사용하도록 보고서 서버를 구성하는 방법을 보여 줍니다.
BACKUP 및 COPY_ONLY를 사용하여 보고서 서버 데이터베이스 백업
데이터베이스를 백업하려면 SQL Server Management Studio를 연 다음 쿼리 창에서 다음 문을 실행합니다. 이러한 문은 인수를 COPY_ONLY
사용하며 데이터베이스와 로그 파일을 모두 백업합니다.
이러한 문을 실행하기 전에 path-to-backup-folder> 자리 표시자를 현재 인스턴스의 Backup 폴더 경로(예: .)로 C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP
바꿉<니다.
-- To permit log backups, alter the database to use the full recovery model
-- before you run the full database backup.
USE master;
GO
ALTER DATABASE ReportServer
SET RECOVERY FULL
-- First back up the database without using the COPY_ONLY argument.
-- This step is needed after you change the recovery model to full.
-- It prevents a 4214 error from occurring.
USE master;
GO
BACKUP DATABASE ReportServer
TO DISK = '<path-to-backup-folder>\ReportServerExtraBackup.bak'
GO
-- If the ReportServerData device doesn't exist yet, create it.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerData',
'<path-to-backup-folder>\ReportServerData.bak'
-- Create a logical backup device, ReportServerLog.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerLog',
'<path-to-backup-folder>\ReportServerLog.bak'
-- Back up the full ReportServer database.
BACKUP DATABASE ReportServer
TO ReportServerData
WITH COPY_ONLY
-- Back up the ReportServer log.
BACKUP LOG ReportServer
TO ReportServerLog
WITH COPY_ONLY
-- To permit log backups, alter the database to use the full recovery model
-- before you run the full database backup.
USE master;
GO
ALTER DATABASE ReportServerTempdb
SET RECOVERY FULL
-- First back up the database without using the COPY_ONLY argument.
-- This step is needed after you change the recovery model to full.
-- It prevents a 4214 error from occurring.
USE master;
GO
BACKUP DATABASE ReportServerTempdb
TO DISK = '<path-to-backup-folder>\ReportServerTempdbExtraBackup.bak'
GO
-- If the ReportServerTempDBData device doesn't exist yet, create it.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBData',
'<path-to-backup-folder>\ReportServerTempDBData.bak'
-- Create a logical backup device, ReportServerTempDBLog.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBLog',
'<path-to-backup-folder>\ReportServerTempDBLog.bak'
-- Back up the full ReportServerTempDB database.
BACKUP DATABASE ReportServerTempDB
TO ReportServerTempDBData
WITH COPY_ONLY
-- Back up the ReportServerTempDB log.
BACKUP LOG ReportServerTempDB
TO ReportServerTempDBLog
WITH COPY_ONLY
RESTORE 및 MOVE를 사용하여 보고서 서버 데이터베이스 재배치
데이터베이스를 복원하려면 SQL Server Management Studio를 연 다음 쿼리 창에서 다음 문을 실행합니다.
다음 문에서 다음을 수행합니다.
RESTORE
데이터베이스 및 로그 파일에 대한 작업은 별도로 실행됩니다.인수는
MOVE
경로를 지정하는 방법을 제공합니다. 이 인수는 데이터 파일의 논리적 이름을 사용합니다. 논리 이름을 찾으려면 다음 문을 실행합니다. <먼저 path-to-report-server-database-backup-file> 자리 표시자를 보고서 서버 데이터베이스 백업 파일의 경로(예:C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak
.RESTORE FILELISTONLY FROM DISK='<path-to-report-server-database-backup-file>';
출력의 LogicalName 열에서 논리적 이름을 찾을 수 있습니다.
유사한 문을 실행하여 임시 데이터베이스의 논리적 이름을 찾을 수 있습니다.
RESTORE FILELISTONLY FROM DISK='<path-to-temporary-database-backup-file>';
이 인수는
FILE
복원할 로그 파일의 파일 위치를 지정하는 방법을 제공합니다. 파일 위치를 찾으려면 다음 문을 실행합니다. <먼저 path-to-report-server-database-backup-file> 자리 표시자를 보고서 서버 데이터베이스 백업 파일의 경로(예:C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak
.RESTORE HEADERONLY FROM DISK='<path-to-report-server-database-backup-file>';
출력의 위치 열에서 파일 위치를 찾을 수 있습니다.
유사한 문을 실행하여 임시 데이터베이스의 파일 위치를 찾을 수 있습니다.
RESTORE HEADERONLY FROM DISK='<path-to-temporary-database-backup-file>';
인수는
NORECOVERY
초기 복원을 수행합니다. 이 인수는 데이터베이스를RESTORING
상태로 유지하므로 로그 백업을 검토하여 복원할 데이터베이스를 확인할 시간을 제공합니다.마지막 단계에서는
RECOVERY
인수를 사용하여RESTORE
작업을 반복합니다.
이러한 문을 실행하기 전에 다음 자리 표시자를 적절한 값으로 바꿉니다.
자리 표시자 | 설명 | 예시 |
---|---|---|
<path-to-backup-folder> | 현재 인스턴스의 Backup 폴더 경로 | C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP |
<path-to-new-data-folder> | 새 인스턴스의 데이터 폴더 경로 | C:\Program Files\Microsoft SQL Server\MSSQL16.NEWINSTANCE\MSSQL\DATA |
<report-server-database-logical-name> | 보고서 서버 데이터베이스의 논리적 이름 | ReportServer |
<report-server-database-log-logical-name> | 보고서 서버 데이터베이스 로그의 논리적 이름 | ReportServer_log |
<report-server-database-log-file-position> | 보고서 서버 데이터베이스 로그 파일의 파일 위치 | 2 |
<temporary-database-logical-name> | 임시 데이터베이스의 논리적 이름 | ReportServerTempDB |
<temporary-database-log-logical-name> | 임시 데이터베이스 로그의 논리적 이름 | ReportServerTempDB_log |
<temporary-database-log-file-position> | 임시 데이터베이스 로그 파일의 파일 위치 | 2 |
-- Restore the report server database and move it to the new instance folder.
RESTORE DATABASE ReportServer
FROM DISK='<path-to-backup-folder>\ReportServerData.bak'
WITH NORECOVERY,
MOVE '<report-server-database-logical-name>' TO
'<path-to-new-data-folder>\ReportServer.mdf',
MOVE '<report-server-database-log-logical-name>' TO
'<path-to-new-data-folder>\ReportServer_Log.ldf';
GO
-- Restore the report server log file to the new instance folder.
RESTORE LOG ReportServer
FROM DISK='<path-to-backup-folder>\ReportServerData.bak'
WITH NORECOVERY, FILE=<report-server-database-log-file-position>,
MOVE '<report-server-database-logical-name>' TO
'<path-to-new-data-folder>\ReportServer.mdf',
MOVE '<report-server-database-log-logical-name>' TO
'<path-to-new-data-folder>\ReportServer_Log.ldf';
GO
-- Restore and move the report server temporary database.
RESTORE DATABASE ReportServerTempdb
FROM DISK='<path-to-backup-folder>\ReportServerTempDBData.bak'
WITH NORECOVERY,
MOVE '<temporary-database-logical-name>' TO
'<path-to-new-data-folder>\ReportServerTempDB.mdf',
MOVE '<temporary-database-log-logical-name>' TO
'<path-to-new-data-folder>\ReportServerTempDB_Log.ldf';
GO
-- Restore the temporary database log file to the new instance folder.
RESTORE LOG ReportServerTempdb
FROM DISK='<path-to-backup-folder>\ReportServerTempDBData.bak'
WITH NORECOVERY, FILE=<temporary-database-log-file-position>,
MOVE '<temporary-database-logical-name>' TO
'<path-to-new-data-folder>\ReportServerTempDB.mdf',
MOVE '<temporary-database-log-logical-name>' TO
'<path-to-new-data-folder>\ReportServerTempDB_Log.ldf';
GO
-- Perform the final restore operation on the report database.
RESTORE DATABASE ReportServer
WITH RECOVERY
GO
-- Perform the final restore operation on the temporary database.
RESTORE DATABASE ReportServerTempDB
WITH RECOVERY
GO
보고서 서버 데이터베이스 연결 구성
보고서 서버 구성 관리자를 시작하고 보고서 서버에 대한 연결을 엽니다.
데이터베이스 페이지에서 데이터베이스 변경을 선택합니다.
데이터베이스 변경 페이지에서 기존 보고서 서버 데이터베이스 선택을 선택한 다음, 다음을 선택합니다.
서버 이름에 보고서 서버 데이터베이스를 호스팅하는 SQL Server 인스턴스를 입력한 다음, 연결 테스트를 선택합니다.
연결을 테스트한 후 다음을 선택합니다.
보고서 서버 데이터베이스의 경우 사용할 보고서 서버 데이터베이스를 선택한 다음 다음을 선택합니다.
자격 증명 아래에서 보고서 서버가 보고서 서버 데이터베이스에 연결하는 데 사용하는 자격 증명을 지정한 다음, 다음을 선택합니다.
다음를 선택한 다음 마침을 선택합니다.
참고 항목
SSRS 설치에서 SQL Server 데이터베이스 엔진 인스턴스에는 RSExecRole 역할이 포함되어야 합니다. 역할 만들기, 로그인 등록 및 역할 할당은 보고서 서버 구성 관리자를 사용하여 보고서 서버 데이터베이스 연결을 설정할 때 발생합니다. rsconfig.exe 명령 프롬프트 유틸리티와 같은 대체 방법을 사용하는 경우 보고서 서버가 작동 상태가 아닙니다. 이 경우 보고서 서버를 사용할 수 있도록 WMI(Windows Management Instrumentation) 코드를 작성해야 할 수 있습니다. 자세한 내용은 Reporting Services WMI 공급자 액세스를 참조하세요.