2009-02-04 2 views
3

6 시간마다 백업을 생성하는이 SQL 작업 (SQL Server 2005에서)은 백업의 파일 이름이 타임 스탬프를 기반으로하므로 고유 한 파일 이름 (dbname_yyyymmddhhmmss.bak), 이제 내 질문입니다, 파일을 3 일 이전 및 내 스크립트를 기반으로 3 일 오래된 백업 (.bak) 삭제하려는 경우 xp_cmdshell 사용하여 어떻게 알 것입니다. 누군가가 저를 도울 수 있습니까, 미리 감사드립니다. 건배!날짜별로 한 디렉터리에서 다른 디렉터리로 파일 복사

답변

1

이 정말 귀하의 질문에 대한 답이 아니라 당신은 유지 관리 계획과 SQLSERVER 2005 년 직접이 작업을 수행 할 수 있습니다 (개체 탐색기 -> 관리 -> 유지 관리 계획).

일반적으로 두 가지 작업을 포함하여 하나의 유지 관리 계획을 만듭니다. 하나는 "유지 관리 정리 작업"으로, x 일 후에 오래된 백업을 삭제 한 다음 "데이터베이스 백업 작업"을 추가합니다.

+0

정확히 맞는 대답입니다. –

+0

그래,하지만 요청한대로 xp_cmdshell이 ​​포함 된 파일 복사는 포함되지 않습니다 ... – mbaechtold

+0

안녕하세요, Tini입니다. 그렇지만 해결책은 원본 질문에서 더 효율적이고 안전한 방식으로 작업의 목표를 달성 할 수 있습니다. 내가 너에게 준 점수를 빼앗기지 말아라. –

1

이것은 실제로 xp_cmdshell에 적합한 작업이 아닙니다. SQL Server 내에서이 기능을 사용하도록 설정하면 보안에 영향을 미칩니다.

달성하고자하는 것은 SQL Server Integration Services (SSIS)에 훨씬 적합 할 것입니다. 백업을 관리하고 수행하는 데 사용할 수있는 구성 요소와 데이터 이동 및 삭제에 사용할 수있는 파일 시스템 태스크 구성 요소가 있습니다.

파일 시스템 작업, 변수 및 표현식을 조합하여 백업 파일 이름을 검색하고 날짜 구성 요소를 추출하고 파일의 길이를 확인할 수 있습니다. 그런 다음 파일에 대해 적절한 조치를 취할 수 있습니다.

도움이되기를 바랍니다. 추가 정보가 필요하면 다른 질문이 있으시면 언제든지 문의 해주십시오.

이 건배, 존

0

.NET 어셈블리를 작성하고 SQL Server에서 호출 할 수 있습니다. 테이블 값 함수가 특정 디렉토리의 모든 파일을 filename 및 file datestamp와 함께 반환하도록 파일을 작성하는 것이 매우 쉽습니다.

4

xp_cmdshell이 ​​작업에 대한 최상의 대안이 아니라는 것에 동의합니다. 나 같은 사람이고 유지 관리 계획을 좋아하지 않는다면 C# 콘솔 응용 프로그램을 작성할 수 있습니다. 여기서 파일 시스템 지원은 DOS에서 할 수있는 것보다 훨씬 강력합니다 (또는 T-SQL을 사용하여 출력을 구문 분석 할 수 있습니다 xp_cmdshell 'DIR ...')을 실행 한 다음 Windows 예약 된 작업에서 예약하여 SQL Server 서비스/프록시 계정의 권한 상승 문제에 대해 걱정할 필요가 없습니다. 모든 것을 하나의 패키지에 담는 것이 좋지만 항상 기름을 바꾸어 놓은 사람이 당신을 치즈로 만들지는 않을 것입니다.