적용 대상:SQL Server
이 글에서는 SQL Server Management Studio(SSMS), Transact-SQL, 또는 PowerShell을 사용하여 SQL Server에서 완전한 데이터베이스 백업을 만드는 방법을 설명합니다.
자세한 내용은 Azure Blob Storage를 사용한 SQL Server 백업 및 복원 및 Azure Blob Storage용 URL에 대한 SQL Server 백업을 참조하세요. 백업 개념과 작업에 대한 개요는 백업 개요(SQL Server)를 참조하세요.
권장 사항
데이터베이스가 성장할수록 전체 데이터베이스 백업은 시간이 더 오래 걸리고 더 많은 저장 공간이 필요합니다. 대규모 데이터베이스의 경우 전체 백업을 일련의 차등 데이터베이스 백업으로 보완하세요.
sp_spaceused 시스템 저장 프로시저를 사용해 전체 데이터베이스 백업의 크기를 추정합니다.
기본적으로 각 성공적인 백업은 SQL Server 오류 로그와 시스템 이벤트 로그에 항목을 추가합니다. 빈번한 백업은 이 로그를 채우고 다른 메시지를 찾기 어렵게 만듭니다.
백업 로그 항목을 억제하려면 스크립트가 트레이스 플래그에 의존하지 않는 한 3226을 사용하세요.
제한점
명시적이든 암묵적이든 거래 내역에서 이 BACKUP 명세문을 사용할 수 없습니다.
이전 버전의 SQL Server에서는 최신 버전에서 백업을 복원할 수 없습니다. 예를 들어, SQL Server 2025 (17.x) 백업을 SQL Server 2022 (16.x)에서는 복원할 수 없습니다.
보안
데이터베이스 백업에서 TRUSTWORTHY이(가) OFF로 설정됩니다.
TRUSTWORTHY을(를) ON(으)로 설정하려면 ALTER DATABASE SET 옵션을(를) 참조하세요.
SQL Server 2012(11.x)부터는 PASSWORD 백업 생성에 사용할 수 있는 AND MEDIAPASSWORD 옵션이 없어졌습니다. 암호를 사용하여 만든 백업은 계속 복원할 수 있습니다.
사용 권한
BACKUP DATABASE
BACKUP LOG 그리고 시스템 관리자 고정 서버 역할과 db_owner 및 db_backupoperator 고정 데이터베이스 역할의 구성원에게 권한이 기본적으로 부여됩니다.
SQL Server 서비스 계정은 백업 장치의 물리적 파일에 대해 읽기 및 쓰기 권한을 가져야 합니다. 해당 파일의 소유권 또는 권한이 있으면 백업 및 복원 작업이 방해받고, 백업 또는 복원 작업이 실행될 때만 나타납니다.
예를 들어, 시스템 테이블에 백업 장치 항목을 추가하는 sp_addumpdevice 시스템 저장 프로시저는 파일 접근 을 검증하지 않습니다 .
SQL Server Management Studio 사용
개체 탐색기에서 데이터베이스 엔진에 연결한 후 서버 트리를 펼칩니다.
데이터베이스를 펼친 후 사용자 데이터베이스를 선택하세요. 또는 시스템 데이터베이스를 펼쳐 시스템 데이터베이스를 선택하세요.
백업하고 싶은 데이터베이스를 우클릭한 후 작업(Tasks)을 선택한 후 백업을 선택하세요.
데이터베이스 백업 대화상자에서 선택한 데이터베이스가 드롭다운 목록에 나타납니다. 서버의 다른 데이터베이스로 변경할 수 있습니다.
백업 유형 목록에서 백업 유형을 선택합니다. 기본값은 Full입니다.
중요한
차등 또는 트랜잭션 로그 백업을 수행하려면 먼저 하나 이상의 전체 데이터베이스 백업을 수행해야 합니다.
Backup 구성 요소 아래에서 데이터베이스를 선택합니다.
대상 섹션에서 백업 파일의 기본 위치를 검토합니다(../mssql/data 폴더).
Back up to 목록을 사용하여 다른 기기를 선택하세요. 백업 객체나 목적지를 추가하려면 추가 를 선택하세요. 백업 세트를 여러 파일에 걸쳐 스트라이프로 표시하면 백업 속도를 높일 수 있습니다.
백업 대상을 제거하려면 백업 대상을 선택하고 제거를 선택합니다. 기존 백업 목적지의 내용을 보려면 해당 목적지를 선택하고 Contents를 선택하세요.
선택적으로 미디어 옵션 과 백업 옵션 페이지의 다른 설정을 검토해 보세요.
백업 옵션에 대한 자세한 내용은 백업 데이터베이스(일반 페이지),백업 데이터베이스(미디어 옵션 페이지), 백업 데이터베이스(백업 옵션 페이지)를 참조하세요.
확인을 선택하여 백업을 시작합니다.
백업이 성공적으로 완료되면 확인 을 선택해 대화상자를 닫으세요.
비고
SQL Server Management Studio에서 백업 작업을 지정하면, 스크립트 버튼을 선택한 후 스크립트 목적지를 선택하면 해당 Transact-SQL BACKUP 스크립트를 생성할 수 있습니다.
전체 데이터베이스 백업을 만든 후에는 차분 데이터베이스 백업 이나 트랜잭션 로그 백업을 만들 수 있습니다.
선택적으로 복사 전용 백업 체크박스를 선택하여 복사 전용 백업을 생성할 수 있습니다. 복사 전용 백업은 기존 SQL Server 백업 시퀀스에 관계없이 SQL Server 백업입니다. 자세한 내용은 복사 전용 백업을 참조하세요. 차별형 백업 유형에는 복사 전용 백업이 없습니다.
URL 백업 시 미디어 옵션 페이지에서 미디어 덮기 옵션이 비활성화되어 있습니다.
예제
다음 예시에서는 다음 Transact-SQL 코드를 사용하여 테스트 데이터베이스를 생성하세요:
USE master;
GO
CREATE DATABASE [SQLTestDB];
GO
USE [SQLTestDB];
GO
CREATE TABLE SQLTest
(
ID INT NOT NULL PRIMARY KEY,
c1 VARCHAR (100) NOT NULL,
dt1 DATETIME DEFAULT getdate() NOT NULL
);
GO
USE [SQLTestDB];
GO
INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1');
INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2');
INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3');
INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4');
INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5');
GO
SELECT *
FROM SQLTest;
GO
A. 기본 위치에 디스크 전체 백업 수행
이 예시는 데이터베이스를 SQLTestDB 기본 백업 위치의 디스크에 백업합니다.
개체 탐색기에서 데이터베이스 엔진에 연결한 후 서버 트리를 펼칩니다.
데이터베이스를 확장하고
SQLTestDB를 마우스 오른쪽 버튼으로 선택하여 작업을 가리킨 다음 백업...을 선택합니다.확인을 선택합니다.
백업이 성공적으로 완료되면 확인 을 선택해 대화상자를 닫으세요.
B. 기본이 아닌 위치에 디스크에 전체 백업
이 예시는 선택한 위치에서 데이터베이스를 SQLTestDB 디스크에 백업합니다.
개체 탐색기에서 데이터베이스 엔진에 연결한 후 서버 트리를 펼칩니다.
데이터베이스를 확장하고
SQLTestDB를 마우스 오른쪽 버튼으로 선택하여 작업을 가리킨 다음 백업...을 선택합니다.일반 페이지의 목적지 섹션에서 백업 목록에서디스크를 선택하세요.
기존 백업 파일이 모두 제거될 때까지 제거 를 선택합니다.
추가를 선택합니다. 백업 목적지 선택 대화상자가 열립니다.
파일 이름 상자에 올바른 경로와 파일 이름을 입력합니다. 파일 분류를 단순화하기 위해 .bak 를 확장자로 사용하세요.
확인을 선택한 후 다시 확인을 선택하면 백업을 시작하세요.
백업이 성공적으로 완료되면 확인 을 선택해 대화상자를 닫으세요.
C. 암호화된 백업 만들기
이 예시는 데이터베이스를 기본 백업 위치로 암호화하여 백업합니다 SQLTestDB .
개체 탐색기에서 데이터베이스 엔진에 연결한 후 서버 트리를 펼칩니다.
데이터베이스를 확장하고 시스템 데이터베이스를 확장하고 마우스 오른쪽 단추를 클릭한
master다음 새 쿼리를 선택하여 데이터베이스에 연결된SQLTestDB쿼리 창을 엽니다.다음 명령어를 실행하여 데이터베이스 마스터 키 와 데이터베이스 내
master인증서를 생성하세요.-- Create the master key. CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>'; -- If the master key already exists, open it in the same session that you create the certificate. (See next step.) OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>'; -- Create the certificate encrypted by the master key. CREATE CERTIFICATE MyCertificate WITH SUBJECT = 'Backup Cert', EXPIRY_DATE = '20201031';개체 탐색기에서 데이터베이스 노드의
SQLTestDB를 마우스 오른쪽 버튼으로 선택하고 작업을 가리킨 다음, 백업...을 선택합니다.미디어 옵션 페이지의 미디어 덮어쓰기 섹션에서 새 미디어 세트로 백업을 선택하고 기존 백업 세트를 모두 지웁다.
백업 옵션 페이지의 암호화 섹션에서 백업 암호화를 선택합니다.
알고리즘 목록에서 AES 256을 선택합니다.
인증서 또는 비대칭 키 목록에서 .를 선택합니다
MyCertificate.확인을 선택합니다.
D. Azure Blob Storage로 백업하기
이 예제에서는 Azure Blob Storage에 대한 SQLTestDB 전체 데이터베이스 백업을 만듭니다. 예시는 이미 블롭 컨테이너가 있는 스토리지 계정이 있다고 가정합니다. 예시는 공유 접근 서명을 생성하며, 컨테이너에 기존 공유 접근 서명이 있으면 실패합니다.
스토리지 계정에 Blob Storage 컨테이너가 없다면, 진행하기 전에 먼저 생성하세요. 범용 스토리지 계정 만들기 및 컨테이너 만들기를 참조하세요.
개체 탐색기에서 데이터베이스 엔진에 연결한 후 서버 트리를 펼칩니다.
데이터베이스를 확장하고
SQLTestDB를 마우스 오른쪽 버튼으로 선택하여 작업을 가리킨 다음 백업...을 선택합니다.일반 페이지의 대상 섹션에서 백업 위치 목록의 URL을 선택합니다.
추가를 선택합니다. 백업 목적지 선택 대화상자가 열립니다.
이전에 SSMS에서 사용하려는 Azure 스토리지 컨테이너를 등록했다면, 그 컨테이너를 선택하세요. 그렇지 않은 경우 새 컨테이너를 선택하여 새 컨테이너를 등록합니다.
Microsoft 구독에 연결하기(Connect to a Subscription) 대화상자에서 계정에 로그인하세요.
스토리지 계정 선택 상자에서 스토리지 계정을 선택합니다.
Blob 컨테이너 선택 상자에서 Blob 컨테이너를 선택합니다.
공유 접근 정책 만료 달력 상자에서 이 예제가 생성하는 공유 접근 정책의 만료일을 선택하세요.
SSMS에서 공유 접근 서명과 자격 증명을 생성하려면 자격 증명 생성(Create Credential )을 선택하세요.
확인을 선택해 Microsoft 구독 연결 대화상자를 닫으세요.
백업 파일 상자에서 원하는 경우 백업 파일의 이름을 변경합니다.
확인을 선택해 '백업 목적지 선택 대화상자'를 닫으세요.
확인을 선택하여 백업을 시작합니다.
백업이 성공적으로 완료되면 확인 을 선택해 대화상자를 닫으세요.
참고
관리 ID를 사용하여 Blob Storage에 백업하는 기능은 현재 지원되지 않습니다.
Transact-SQL 사용
문장을 실행하여 전체 데이터베이스 백업을 생성하세요.BACKUP DATABASE 지정:
- 백업할 데이터베이스의 이름입니다.
- 전체 데이터베이스 백업이 기록되는 백업 디바이스
전체 데이터베이스 백업에 대한 기본 Transact-SQL 구문은 다음과 같습니다.
BACKUP DATABASE <database>
TO <backup_device> [ , ...n ]
[ WITH <with_options> [ , ...o ] ];
| 옵션 | 설명 |
|---|---|
<database> |
백업용 데이터베이스. |
<backup_device> [ , ...n ] |
백업 작업에 사용할 1대부터 64대까지의 백업 장치를 지정합니다. 물리적 백업 장치를 지정하거나, 이미 정의된 논리적 백업 장치를 지정하세요. 물리적 백업 장치를 지정하려면 , , TAPE또는 URL 옵션을 사용DISK하세요:{ DISK | URL | TAPE} = physical_backup_device_nameAzure Blob Storage나 S3 호환 오브젝트 스토리지로 백업하는 데 사용 URL 하세요. 자세한 내용은 백업 디바이스(SQL Server)를 참조하세요. |
WITH <with_options> [ , ...n ] |
하나 이상의 옵션을 지정하는 데 사용됩니다, n. 기본 WITH 옵션 중 일부는 다음 목록에 설명되어 있습니다. |
필요에 따라 하나 이상의 WITH 옵션을 지정합니다. 여기에 몇 가지 기본 WITH 옵션이 설명되어 있습니다. 모든 WITH 옵션에 대한 정보는 .를 참조하세요 BACKUP.
기본 백업 세트 WITH 옵션:
{ 압축 | 압축 안 함 }. SQL Server는 백업 압축이 수행되는지 여부를 지정하여 서버 수준의 기본값을 덮어씁니다.
ENCRYPTION(ALGORITHM, SERVER CERTIFICATE | ASYMMETRIC KEY). SQL Server 2014 이후 버전에서는 사용할 암호화 알고리즘과 암호화를 안전하게 보호할 인증서 또는 비대칭 키를 지정합니다.
설명 = { '텍스트' | @text_variable }. 백업 집합을 설명하는 자유 형식 텍스트를 지정합니다. 문자열을 최대 255자까지 지정할 수 있습니다.
NAME = { backup_set_name | @backup_set_name_var }. 백업 세트의 이름을 지정합니다. 이름은 최대 128자까지 지정할 수 있습니다.
NAME를 지정하지 않으면 비어 있습니다.
기본적으로 BACKUP은 기존 미디어 세트에 백업을 추가하여 기존 백업 세트를 유지합니다. 이 구성을 명시적으로 지정하려면 이 옵션을 사용합니다 NOINIT . 기존 백업 집합에 추가하는 방법에 대한 자세한 내용은 미디어 세트, 미디어 패밀리 및 백업 세트(SQL Server)를 참조하세요.
백업 미디어의 서식을 지정하려면 다음 FORMAT 옵션을 사용합니다.
FORMAT [ , 미디어이름 = { media_name | @media_name_variable } ] [ , 미디어설명 = { text | @text_variable } ]
미디어를 처음 사용할 때나 기존 데이터를 덮어쓰고 싶을 때 이 절을 사용 FORMAT 하세요. 필요에 따라 새 미디어에 미디어 이름과 설명을 지정합니다.
중요한
이 문장의 BACKUP 절을 사용할 FORMAT 때는 주의해야 합니다. 이 옵션은 백업 미디어에 저장된 모든 백업을 파괴하기 때문입니다.
예제
다음 예시에서는 다음 Transact-SQL 코드를 사용하여 테스트 데이터베이스를 생성하세요:
USE master;
GO
CREATE DATABASE [SQLTestDB];
GO
USE [SQLTestDB];
GO
CREATE TABLE SQLTest
(
ID INT NOT NULL PRIMARY KEY,
c1 VARCHAR (100) NOT NULL,
dt1 DATETIME DEFAULT GETDATE() NOT NULL
);
GO
USE [SQLTestDB];
GO
INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1');
INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2');
INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3');
INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4');
INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5');
GO
SELECT *
FROM SQLTest;
GO
A. 디스크 디바이스에 백업
다음 예제에서는 전체 SQLTestDB 데이터베이스를 디스크에 백업합니다.
FORMAT을 사용하여 새 미디어 세트를 만듭니다.
USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
TO DISK = 'c:\tmp\SQLTestDB.bak'
WITH FORMAT,
MEDIANAME = 'SQLServerBackups',
NAME = 'Full Backup of SQLTestDB';
GO
B. 테이프 디바이스에 백업
다음 예제에서는 전체 SQLTestDB 데이터베이스를 테이프에 백업합니다. 이전 백업에 백업을 추가합니다.
USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
TO TAPE = '\\.\Tape0'
WITH NOINIT,
NAME = 'Full Backup of SQLTestDB';
GO
C. 논리적 테이프 장치에 백업
다음 예에서는 테이프 드라이브에 대한 논리적 백업 디바이스를 만듭니다. 그런 다음, 전체 SQLTestDB 데이터베이스를 해당 디바이스에 백업합니다.
-- Create a logical backup device,
-- SQLTestDB_Bak_Tape, for tape device \\.\tape0.
USE master;
GO
EXECUTE sp_addumpdevice 'tape', 'SQLTestDB_Bak_Tape', '\\.\tape0';
USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
TO SQLTestDB_Bak_Tape
WITH FORMAT,
MEDIANAME = 'SQLTestDB_Bak_Tape',
MEDIADESCRIPTION = '\\.\tape0',
NAME = 'Full Backup of SQLTestDB';
GO
PowerShell
Backup-SqlDatabase cmdlet을 사용합니다. 전체 데이터베이스 백업을 명시적으로 나타내려면 매개 변수를 -BackupAction 기본값 Database으로 지정합니다. 전체 데이터베이스 백업의 경우 이 매개 변수는 선택 사항입니다.
SSMS 내에서 PowerShell 창을 열어 SQL Server 데이터베이스 엔진에 연결하면, 자격 증명 부분을 생략할 수 있습니다. SSMS의 자격 증명이 PowerShell과 데이터베이스 엔진 간의 연결을 자동으로 설정하기 때문입니다.
참고
이 예시는 모듈을 SqlServer 필요로 합니다. 자세한 내용은 SQL Server PowerShell 공급자를 참조하세요.
예제
A. 전체 백업(로컬)
다음 예에서는 서버 인스턴스 <myDatabase> 의 기본 백업 위치에 Computer\Instance데이터베이스의 전체 데이터베이스 백업을 만듭니다. 필요에 따라 이 예제에서는 .를 지정합니다 -BackupAction Database.
전체 구문 예제는 Backup-SqlDatabase를 참조하세요.
$credential = Get-Credential
Backup-SqlDatabase -ServerInstance Computer[\Instance] -Database <myDatabase> -BackupAction Database -Credential $credential
B. Azure에 전체 백업
다음 예제에서는 <myDatabase> 인스턴스의 데이터베이스 <myServer>를 Blob Storage에 전체 백업으로 생성합니다. 읽기, 쓰기, 리스트 권한이 있는 저장 접근 정책이 생성됩니다. SQL Server 자격 증명 https://<myStorageAccount>.blob.core.windows.net/<myContainer>는 저장된 접근 정책과 연관된 공유 접근 서명을 사용하여 생성됩니다. 이 명령은 매개 변수를 $backupFile 사용하여 위치(URL) 및 백업 파일 이름을 지정합니다.
$credential = Get-Credential
$container = 'https://<myStorageAccount>blob.core.windows.net/<myContainer>'
$fileName = '<myDatabase>.bak'
$server = '<myServer>'
$database = '<myDatabase>'
$backupFile = $container + '/' + $fileName
Backup-SqlDatabase -ServerInstance $server -Database $database -BackupFile $backupFile -Credential $credential
관련 작업
- 차등 데이터베이스 백업 만들기(SQL Server)
- SSMS를 사용하여 데이터베이스 백업 복원
- 간단한 복구 모델로 데이터베이스 백업을 복원하세요
- 실패 지점으로 데이터베이스 복원 - 전체 복구
- 데이터베이스를 새 위치로 복원(SQL Server)
- 유지 관리 계획 마법사 사용