데이터베이스 스냅숏 만들기(Transact-SQL)

SQL Server 데이터베이스 스냅숏은 Transact-SQL을 사용해서만 만들 수 있습니다. SQL Server Management Studio는 데이터베이스 스냅숏 만들기를 지원하지 않습니다.

  • **시작하기 전 주의 사항 **

    사전 요구 사항

    보안

    최선의 구현 방법: 데이터베이스 스냅숏 명명

  • **데이터베이스 스냅숏을 만들려면: ** Transact-SQL

시작하기 전 주의 사항

사전 요구 사항

복구 모델을 사용할 수 있는 원본 데이터베이스는 다음 사전 요구 사항을 충족해야 합니다.

  • 서버 인스턴스는 데이터베이스 스냅숏을 지원하는 SQL Server 버전을 실행해야 합니다. SQL Server 2012에서의 데이터베이스 스냅숏 지원에 대한 자세한 내용은 SQL Server 2012 버전에서 지원하는 기능을 참조하십시오. 

  • 데이터베이스 미러링 세션의 미러 데이터베이스가 아닌 경우 원본 데이터베이스는 온라인 상태여야 합니다.

  • 미러 데이터베이스에서 데이터베이스 스냅숏을 만들려면 데이터베이스가 동기화된 미러링 상태여야 합니다.

  • 원본 데이터베이스는 확장 가능한 공유 데이터베이스로 구성할 수 없습니다.

중요 정보중요

다른 주요 고려 사항에 대한 자세한 내용은 데이터베이스 스냅숏(SQL Server)을 참조하십시오.

권장 사항

이 섹션에서는 다음과 같은 최상의 방법에 대해 설명합니다.

  • 최선의 구현 방법: 데이터베이스 스냅숏 명명

  • 최선의 구현 방법: 데이터베이스 스냅숏 수 제한

  • 최선의 구현 방법: 데이터베이스 스냅숏에 대한 클라이언트 연결

최선의 구현 방법: 데이터베이스 스냅숏 명명

스냅숏의 이름은 중요하므로 스냅숏을 만들기 전에 고려해야 합니다. 각 데이터베이스 스냅숏에는 고유한 데이터베이스 이름이 필요합니다. 쉬운 관리를 위해 데이터베이스를 식별하는 다음과 같은 정보를 스냅숏 이름에 첨가할 수 있습니다.

  • 원본 데이터베이스 이름

  • 스냅숏 이름임을 나타내는 부분

  • 스냅숏을 만든 날짜 및 시간, 시퀀스 번호, 자정 이후의 시간 등 지정된 데이터베이스에 대한 스냅숏 순서를 구분하기 위한 정보

예를 들어 AdventureWorks2012 데이터베이스에 대한 일련의 스냅숏을 만든다고 가정합니다. 24시간 표기법을 기준으로 오전 6시와 오후 6시 사이에 6시간 간격으로 세 개의 일일 스냅숏을 만듭니다. 각 일일 스냅숏은 삭제 전 24시간 동안 보존되며 이후에 같은 이름의 새 스냅숏으로 대체됩니다. 각 스냅숏 이름은 날짜가 아닌 시간만 나타냅니다.

AdventureWorks_snapshot_0600
AdventureWorks_snapshot_1200
AdventureWorks_snapshot_1800

이러한 일일 스냅숏을 만드는 시간이 일정하지 않을 경우 보다 덜 정확한 명명 규칙을 사용하는 것이 좋습니다. 예를 들면 다음과 같습니다.

AdventureWorks_snapshot_morning
AdventureWorks_snapshot_noon
AdventureWorks_snapshot_evening

최선의 구현 방법: 데이터베이스 스냅숏 수 제한

원본 데이터베이스의 순차적 스냅숏을 캡처하기 위해 일정 기간 동안 일련의 스냅숏을 만들 수 있습니다. 각 스냅숏은 명시적으로 삭제할 때까지 유지됩니다. 원본 페이지를 업데이트함에 따라 각 스냅숏의 크기도 증가하므로 새 스냅숏을 만든 후에는 디스크 공간 유지를 위해 기존의 스냅숏을 지울 수 있습니다.

[!참고]

데이터베이스를 스냅숏으로 되돌리기 위해서는 해당 데이터베이스의 다른 스냅숏을 삭제해야 합니다.

최선의 구현 방법: 데이터베이스 스냅숏에 대한 클라이언트 연결

클라이언트가 데이터베이스 스냅숏을 사용하려면 그 위치를 알아야 합니다. 사용자가 데이터베이스 스냅숏을 읽는 동안 다른 스냅숏이 생성되거나 삭제될 수 있습니다. 따라서 기존의 스냅숏을 새 스냅숏으로 대체하면 클라이언트를 새 스냅숏으로 리디렉션해야 합니다. 사용자는 SQL Server Management Studio를 이용해 수동으로 데이터베이스 스냅숏에 연결할 수 있습니다. 하지만 프로덕션 환경을 지원하려면 보고 및 작성 클라이언트를 자동으로 데이터베이스의 최신 데이터베이스 스냅숏으로 리디렉션하는 프로그래밍 솔루션을 만들어야 합니다.

[맨 위]

보안

사용 권한

데이터베이스를 만들 수 있는 모든 사용자는 데이터베이스 스냅숏을 만들 수 있습니다. 그러나 미러 데이터베이스의 스냅숏을 만들려면 sysadmin 고정 서버 역할의 멤버여야 합니다.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[맨 위]

데이터베이스 스냅숏을 만드는 방법(Transact-SQL 사용)

데이터베이스 스냅숏을 만들려면

[!참고]

이 프로시저의 예는 이 섹션의 뒷부분에 나오는 예(Transact-SQL)를 참조하십시오.

  1. 원본 데이터베이스의 현재 크기를 기준으로 데이터베이스 스냅숏을 저장할 수 있는 충분한 디스크 공간이 있는지 확인합니다. 데이터베이스 스냅숏의 최대 크기는 스냅숏을 생성할 때의 원본 데이터베이스 크기입니다. 자세한 내용은 데이터베이스 스냅숏 스파스 파일의 크기 보기(Transact-SQL)를 참조하십시오.

  2. AS SNAPSHOT OF 절을 사용하여 파일에서 CREATE DATABASE 문을 실행합니다. 스냅숏을 만들려면 원본 데이터베이스를 구성하는 모든 데이터베이스 파일의 논리적 이름을 지정해야 합니다. 구문은 다음과 같습니다.

    CREATE DATABASE database_snapshot_name

        ON

        (

            NAME = logical_file_name,

            FILENAME = 'os_file_name'

        ) [ ,...n ]

        AS SNAPSHOT OF source_database_name

    [;]

    여기서 source_database_name은 SQL Server에서 파일을 참조하는 데 사용되는 원본 데이터베이스인 logical_file_name i의 논리적 이름이고, os_file_name은 운영 체제에서 파일을 만드는 데 사용되는 경로 및 파일 이름이고, database_snapshot_name은 데이터베이스를 되돌릴 스냅숏의 이름입니다. 이 구문에 대한 자세한 내용은 CREATE DATABASE(Transact-SQL)를 참조하십시오.

    [!참고]

    데이터베이스 스냅숏을 만들 때 로그 파일, 오프라인 파일, 복원 파일 및 존재하지 않는 파일은 CREATE DATABASE 문에 사용할 수 없습니다.

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[맨 위]

예(Transact-SQL)

[!참고]

이 예에서 사용된 .ss 확장명은 임의로 지정됩니다.

이 섹션에서는 다음과 같은 예를 보여 줍니다.

  • 1. AdventureWorks 데이터베이스에 대한 스냅숏 만들기

  • 2. Sales 데이터베이스에 대한 스냅숏 만들기

1.AdventureWorks 데이터베이스에 대한 스냅숏 만들기

이 예에서는 AdventureWorks 데이터베이스에 대한 데이터베이스 스냅숏을 만듭니다. 스냅숏 이름 AdventureWorks_dbss_1800 및 스파스 파일의 파일 이름 AdventureWorks_data_1800.ss는 생성 시간이 오후 6시(18:00시)임을 나타냅니다.

CREATE DATABASE AdventureWorks_dbss1800 ON
( NAME = AdventureWorks_Data, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\AdventureWorks_data_1800.ss' )
AS SNAPSHOT OF AdventureWorks;
GO

2.Sales 데이터베이스에 대한 스냅숏 만들기

이 예에서는 Sales 데이터베이스에 대한 데이터베이스 스냅숏 sales_snapshot1200을 만듭니다. 이 데이터베이스는 CREATE DATABASE(Transact-SQL)의 "파일 그룹을 가진 데이터베이스 만들기" 예에서 만들었습니다.

--Creating sales_snapshot1200 as snapshot of the
--Sales database:
CREATE DATABASE sales_snapshot1200 ON
( NAME = SPri1_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SPri1dat_1200.ss'),
( NAME = SPri2_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SPri2dt_1200.ss'),
( NAME = SGrp1Fi1_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\mssql\data\SG1Fi1dt_1200.ss'),
( NAME = SGrp1Fi2_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SG1Fi2dt_1200.ss'),
( NAME = SGrp2Fi1_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SG2Fi1dt_1200.ss'),
( NAME = SGrp2Fi2_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SG2Fi2dt_1200.ss')
AS SNAPSHOT OF Sales
GO

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[맨 위]

관련 태스크

맨 위로 이동 링크와 함께 사용되는 화살표 아이콘[맨 위]

참고 항목

참조

CREATE DATABASE(Transact-SQL)

개념

데이터베이스 스냅숏(SQL Server)