홈페이지 » 어떻게 » SQL Server 데이터베이스 유지 관리를 단순화하는 배치 스크립트

    SQL Server 데이터베이스 유지 관리를 단순화하는 배치 스크립트

    백업을 만드는 것 외에도 SQL Server에서 제공하는 다양한 작업과 기능을 통해 데이터베이스의 성능과 안정성을 향상시킬 수 있습니다. 이전에 간단한 명령 줄 스크립트로 SQL Server 데이터베이스를 백업하는 방법을 보여주었습니다. 일반적인 유지 관리 작업을 쉽게 수행 할 수있는 스크립트를 제공하는 것과 동일한 방식으로.

    데이터베이스 압축 / 축소 [/ Compact]

    SQL Server 데이터베이스가 사용하는 실제 디스크 공간에 영향을 미치는 몇 가지 요소가 있습니다. 몇가지 말하자면:

    • 시간이 지남에 따라 레코드가 추가, 삭제 및 업데이트되면서 SQL은 테이블을 지속적으로 확장 및 축소하고 임시 데이터 구조를 생성하여 쿼리 조작을 수행합니다. 디스크 저장 요구를 수용하기 위해 SQL Server는 필요에 따라 데이터베이스 크기를 늘려 (대개 10 % 씩) 데이터베이스 파일 크기가 지속적으로 변경되지 않도록합니다. 이는 성능에 이상적이지만 사용 된 저장 공간과의 연결이 끊어 질 수 있습니다. 예를 들어 데이터베이스가 커지고 이후에 이러한 레코드를 삭제하는 매우 많은 수의 레코드를 추가하면 SQL Server는 자동으로이 레코드를 회수하지 않기 때문입니다 디스크 공간.
    • 데이터베이스에서 전체 복구 모드를 사용하는 경우 트랜잭션 로그 파일 (LDF)이 특히 크게 업데이트되는 데이터베이스에서 상당히 커질 수 있습니다.

    데이터베이스 압축 (또는 축소)은 사용하지 않는 디스크 공간을 회수합니다. 작은 데이터베이스 (200MB 이하)의 경우 일반적으로 많이 사용되지는 않지만 대용량 데이터베이스 (1GB 이상)의 경우에는 교정 된 공간이 중요 할 수 있습니다.

    데이터베이스 다시 색인 생성 [/ Reindex]

    지속적으로 파일을 생성, 편집 및 삭제하는 것과 마찬가지로 디스크 조각화, 데이터베이스의 레코드 삽입, 업데이트 및 삭제로 이어질 수 있으므로 테이블 조각화가 발생할 수 있습니다. 실제 결과는 읽기 및 쓰기 작업이 성능에 영향을줍니다. 완벽한 비유는 아니지만 데이터베이스의 테이블을 다시 색인하면 본질적으로 조각 모음을 수행 할 수 있습니다. 어떤 경우에는 데이터 검색 속도가 크게 빨라질 수 있습니다..

    SQL Server가 작동하는 방식 때문에 테이블을 개별적으로 다시 인덱싱해야합니다. 많은 수의 테이블을 가진 데이터베이스의 경우 이것은 수동으로하는 것이 쉽지 않을 수 있지만 스크립트는 해당 데이터베이스의 모든 테이블을 조회하고 모든 인덱스를 다시 작성합니다.

    무결성 확인 [/ Verify]

    데이터베이스가 기능적으로 유지되고 정확한 결과를 산출하기 위해서는 여러 가지 무결성 항목이 있어야합니다. 다행히 물리적 및 / 또는 논리적 무결성 문제는 흔한 일은 아니지만 때로 데이터베이스에서 무결성 검증 프로세스를 실행하고 결과를 검토하는 것이 좋습니다..

    스크립트를 통해 확인 프로세스가 실행될 때 오류 만보고되므로 좋은 소식이 없습니다..

    스크립트 사용하기

    SQLMaint 배치 스크립트는 SQL 2005 이상과 호환되며 SQLCMD 도구가 설치된 컴퓨터에서 실행해야합니다 (SQL Server 설치의 일부로 설치됨). 이 스크립트는 Windows PATH 변수 (예 : C : Windows)에 설정된 위치에 놓기를 권장하므로 명령 줄에서 다른 응용 프로그램처럼 쉽게 호출 할 수 있습니다.

    도움말 정보를 보려면 다음을 입력하십시오.

    SQLMaint /?

    예제들

    압축을 수행하고 트러스트 된 연결을 사용하여 데이터베이스 "MyDB"에 대해 확인하려면 다음을 수행하십시오.

    SQLMaint MyDB / Compact / Verify

    비밀 번호 "123456"을 가진 "sa"사용자를 사용하여 이름이 지정된 인스턴스 "Special"에서 "MyDB"에 대해 다시 색인을 생성하고 압축하려면 다음과 같이하십시오.

    SQLMaint MyDB /S:.Special / U : sa / P : 123456 / Reindex / Compact

    배치 스크립트 내부에서 사용

    SQLMaint 배치 스크립트는 명령 행의 응용 프로그램처럼 사용할 수 있지만 다른 배치 스크립트에서 사용할 때는 CALL 키워드를 사용해야합니다.

    예를 들어이 스크립트는 신뢰할 수있는 인증을 사용하는 기본 SQL Server 설치의 모든 비 시스템 데이터베이스에서 모든 유지 관리 작업을 실행합니다.

    @ECHO OFF
    SETLOCAL EnableExtensions
    SET DBList = "% TEMP % DBList.txt"
    SqlCmd -E -h-1 -w 300 -Q "SET NoCount ON; SELECT 이름 FROM master.dbo.sysDatabases WHERE 이름 없음 IN '(master,'model ','msdb ','tempdb ') "> % DBList %
    FOR / F "usebackq 토큰 = 1"%% i IN (% DBList %) DO (
    SQLMaint "%% i"/ Compact / Reindex / Verify를 호출하십시오.
    에코 +++++++++++
    )
    IF 존재 DBList % DEL / F / Q % DBList %
    최종

    SysadminGeek.com에서 SQLMaint 배치 스크립트를 다운로드하십시오.