Windows 일괄 처리로 SQL Server DB 전체 백업 파일을 즉시 채취

3963 단어 SQLServer

소개



Windows 배치에서 SQL Server의 전체 백업을 수집하는 방법을 설명합니다.

전제


  • 검증 환경: Windows10 Home SQL Server 2016 Developer
  • 배치 파일과 동일한 서버 (localhost)에서 SQL Server 실행

  • 처리 개요


  • Windows 인증으로 DB(DB명:SANDBOX1)에 접속
  • 전체 백업 파일을 수집하고 D:\SQLServerBackup\DB1.bak로 출력

  • 백업 처리 Windows 배치 작성



    다음과 같은 배치를 작성한다.

    SQLSVDBbackup.bat
    SET PORT=1433
    SET DBSV=localhost
    SET INSTANCE=MSSQLSERVER
    SET DBNAME=SANDBOX1
    REM バックアップ出力先
    SET BKUP_DIR=D:\SQLServerBackup
    
    REM バックアップファイル名
    SET BKUP_FILE_NAME=DB1.bak
    
    REM フルバックアップ
    sqlcmd -S %DBSV%\%INSTANCE%,%PORT% -Q "BACKUP DATABASE %DBNAME% TO DISK='%BKUP_DIR%\%BKUP_FILE_NAME%' WITH INIT, COMPRESSION"
    REM バックアップ生成失敗時
    IF NOT EXIST %BKUP_DIR%\%BKUP_FILE_NAME% GOTO BKUP_ERR
    
    GOTO END
    
    REM エラー処理
    :BKUP_ERR
      ECHO バックアップに失敗
      EXIT /B 9
    
    REM 正常終了
    :END
      EXIT /B 0
    

    이하, 실행 결과 발췌
    D:\SQLServerBackup>sqlcmd -S localhost\MSSQLSERVER,1433 -Q "BACKUP DATABASE SANDBOX1 TO DISK='D:\SQLServerBackup\DB1.bak' WITH INIT, COMPRESSION"
    データベース 'SANDBOX1' の 384 ページ、ファイル 1 のファイル 'SANDBOX1' を処理しました。
    データベース 'SANDBOX1' の 2 ページ、ファイル 1 のファイル 'SANDBOX1_log' を処理しました。
    BACKUP DATABASE により 386 ページが 0.052 秒間で正常に処理されました (57.851 MB/秒)。
    

    실행 결과 확인



    아래와 같이 DB1.bak 파일이 되어 있으면 성공.


    문제해결



    연결 정보가 정확하지만 런타임에 다음 오류가 발생하면 TCP/IP가 무효화되었을 가능성이 높습니다.
    SQL Server 구성 관리자의 설정을 검토합니다.
    Sqlcmd: エラー: Microsoft ODBC Driver 13 for SQL Server: TCP Provider: 待ち操作がタイムアウトになりました。
    Sqlcmd: エラー: Microsoft ODBC Driver 13 for SQL Server: Login timeout expired。
    Sqlcmd: エラー: Microsoft ODBC Driver 13 for SQL Server: A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.。
    

    보충


  • 이 샘플은 전체 백업 파일만을 수집합니다. 차등 백업을 채취하는 경우는 필요한 처리를 구현하는 것.
  • 일일 백업하고 싶은 경우는, 당 bat 파일을 태스크 스케줄러등으로 매일 실행할 수 있도록 해 주면 OK.
  • 이 배치는 샘플로서 같은 서버에 bak 파일을 출력하고 있지만, 파일 서버등에 카피·이름 하는 처리 등 필요에 따라서 실장하는 것.
  • 좋은 웹페이지 즐겨찾기