홈페이지 » 어떻게 » 모든 SQL Server 데이터베이스를 백업하는 배치 스크립트

    모든 SQL Server 데이터베이스를 백업하는 배치 스크립트

    SQL Server 데이터베이스를 명령 줄에서 백업하는 방법은 이미 다뤘습니다. 따라서 모든 데이터베이스를 한 번에 백업하려면 어떻게해야합니까? 각 데이터베이스에 대해 backup 명령을 실행하는 일괄 처리 스크립트를 만들 수 있지만 데이터베이스를 추가하거나 제거 할 때마다이 스크립트를 업데이트해야합니다. 또한 데이터베이스 백업은 실행될 때마다 새 백업의 크기만큼 증가하는 하나의 파일에 추가됩니다. 대신 사실 "설정하고 잊어 버리는"방식으로 새 데이터베이스가 추가되고 제거 될 때 SQL Server에 적응할 배치 스크립트를 만듭니다.

    요점으로 가려면이 스크립트가 백업 스크립트입니다.

    @ECHO OFF
    설정

    REM YYYY-MM-DD 형식의 날짜 가져 오기 (로켈이 미국이라고 가정)
    FOR / F "토큰 = 1,2,3,4 delims = /"%% A IN ( '날짜 / T') DO 설정 NowDate = %% D - %% B - %% C

    REM 백업 할 데이터베이스 목록 작성
    SET DBList = % SystemDrive % SQLDBList.txt
    SqlCmd -E -S MyServer -h-1 -W -Q "SET NoCount ON; SELECT 이름 FROM master.dbo.sysDatabases WHERE [이름] NOT IN ( '마스터', '모델', 'msdb', 'tempdb') ">"% DBList % "

    REM 각 데이터베이스 백업, 파일 이름에 날짜 추가
    FOR / F "tokens = *"%% I IN (% DBList %) DO (
    에코 백업 데이터베이스 : %% I
    SqlCmd -E -S MyServer -Q "BACKUP DATABASE [%% I] 디스크 ="D : 백업 % NowDate % _ %% I.bak ""
    에코.
    )

    REM 임시 파일 정리
    IF 존재 "% DBList %"DEL / F / Q "% DBList %"

    최종

    날짜가 2009 년 1 월 13 일이고 'MyDB', 'AnotherDB'및 'DB Name with Spaces'라는 3 개의 데이터베이스가 있다고 가정하면 스크립트는 지정된 백업 위치에 3 개의 파일을 생성합니다.

    • 2009-01-13_AnotherDB.bak
    • 2009 년 1 월 13 일 Spaces.bak의 이름
    • 2009-01-13_MyDB.bak

    배치 스크립트 사용자 정의 및 실행

    물론 스크립트를 사용자 환경에 맞게 사용자 정의하여 다음과 같이해야합니다.

    • 컴퓨터의 로켈이 미국으로 설정되어 있지 않으면 'Date / T'명령이 "Tue 01/13/2009"형식의 날짜를 반환하지 않을 수 있습니다. 이 경우 NowDate 변수는 원하는 형식을 생성하지 않으므로 조정해야합니다. (1 곳)
    • 'MyServer'를 SQL Server의 이름으로 변경하십시오 (해당되는 경우 인스턴스 이름을 추가하십시오). (2 개소)
    • 'master', 'model', 'msdb'및 'tempdb'라는 데이터베이스는 SQL Server와 함께 제공되는 데이터베이스입니다. 데이터베이스 이름을 백업하지 않으려면이 목록에 데이터베이스 이름을 추가 할 수 있습니다. (1 곳)
    • 백업 위치를 'D : 백업'에서 데이터베이스 백업 파일을 저장할 위치로 변경하십시오.

    배치 스크립트를 사용자 정의한 후에는 Windows Task Scheduler를 통해 관리자 권한을 가진 사용자로 실행하도록 예약하고 모든 설정이 완료되었습니다.