문제

를 쓰려고 노력해요 어떤 SQL 을 삭제하는 파일 형식의'.7z'이전 7 일입니다.

여기에 무엇이 있는데 작동하지 않는:

DECLARE @DateString CHAR(8)
SET @DateString = CONVERT(CHAR(8), DATEADD(d, -7, GETDATE()), 1)
EXECUTE master.dbo.xp_delete_file 0, 
                  N'e:\Database Backups',N'7z', @DateString, 1

나도 변경하는'1'는 말을'0'.

이익의 성공',그러나 파일을 못하고 삭제됩니다.

내가 사용하여 SQL Server2005,표준,w/SP2

도움이 되었습니까?

해결책

비슷한 문제가 있었고 다양한 답변을 찾았습니다. 여기 내가 찾은 것이 있습니다.

XP_DELETE_FILE으로 7Z 파일을 삭제할 수 없습니다. 이것은 SQL 2000의 Holdover 인 문서화되지 않은 확장 저장 프로 시저입니다. 파일의 첫 번째 줄을 확인하여 SQL 백업 파일 또는 SQL 보고서 파일인지 확인합니다. 파일 확장자를 기반으로 확인하지 않습니다. 내가 수집 한 것에서부터 사용되는 것은 오래된 백업을 정리하고 계획 보고서를 정리하기위한 유지 보수 계획입니다.

다음은 7 일 이상의 백업 파일을 삭제하기위한 Tomalak의 링크를 기반으로 한 샘플입니다. 사람들이 올라가는 것은 'SYS'스키마, 폴더 경로의 후행 슬래시 및 파일 확장자의 점수가없는 것입니다. SQL Server가 실행되는 사용자는 폴더에 대한 권한을 삭제해야합니다.

DECLARE @DeleteDate datetime
SET @DeleteDate = DateAdd(day, -7, GetDate())

EXECUTE master.sys.xp_delete_file
0, -- FileTypeSelected (0 = FileBackup, 1 = FileReport)
N'D:\SQLbackups\', -- folder path (trailing slash)
N'bak', -- file extension which needs to be deleted (no dot)
@DeleteDate, -- date prior which to delete
1 -- subfolder flag (1 = include files in first subfolder level, 0 = not)

XP_DELETE_FILE은 SP2에서 깨졌으며 보고서 파일에서는 작동하지 않습니다. [Hotfix가 있습니다.http://support.microsoft.com/kb/938085. SP3로 테스트하지 않았습니다.

문서화되지 않은 XP_DELETE_FILE는 미래의 SQL Server 버전에서 사라지거나 변경 될 수 있습니다. 많은 사이트에서 대신 삭제를 수행하기 위해 쉘 스크립트를 권장합니다.

다른 팁

Afaik xp_delete_file SQL Server 2005에서 인식하는 파일 만 삭제합니다 (백업 파일, 트랜잭션 로그, ...). 아마도 당신은 다음과 같은 것을 시도 할 수 있습니다.

xp_cmdshell 'del <filename>'

이 SP는 기본 SQL Server 백업 파일 또는 기본 유지 보수 보고서 파일 만 삭제합니다 (보안 목적).

Smink가 제안한대로 사용할 수 있습니다

xp_cmdshell 'del <filename>'

폴더에 적절한 권한이 있습니다.

이 질문을 발견했지만 솔루션은 나에게 적용되지 않았습니다 (.Bak 파일과 마찬가지로 SQL Server 자체는 유지 보수 계획의 일부로 만들었습니다).

제 경우에는 문제가 보안이었습니다. 스크립트는 SQL Server (MSSQL)를 시작하는 사용자로 실행되었습니다 (내 경우 대부분의 경우 "네트워크 서비스")는 파일을 삭제하려는 폴더에 액세스 할 수 없었습니다.

따라서 "네트워크 서비스"를 추가하고 "수정"을 부여하는 데 도움이되었습니다.

내가 읽은 다양한 접근 방법 및 솔루션 여러 개인이 추구하려고 할 때 문제를 해결합으로 확장 저장 프로시저 xp_delete.솔루션:

  1. 지침표(.) 에서 확장자를 구성할 때 SSIS 유지보수 작업입니다.
  2. 클릭해야에서 포함되는 첫 번째 수준의 하위 폴더로 그들이 존재하는 경우 각 데이터베이스에 대한 백업입니다.
  3. 클릭해야에서 백업 파일에서 상위.유지보수 작업 확인하는 파일 유형입니다.를 위한 데이터베이스의 백업,나는 그것을 믿을 확인 백업 파일의 헤더가 있습니다.

에서 나의 시나리오는 모든 위의 정확했다.거기에 몇 가지 의견을 웹에서는 일부의 일상적인 xp_delete 는 버그가 있습니다.

할 때 백업 파일이 삭제되고 있지 않습니다,내가 추출하여 데이터베이스에 유지 관리 및 실행에서 SSMS.결과 메시지 파일은 아니었는 sql 서버 백업 파일입니다.이 메시지가 잘못된 것으로 백업 복원할 수 있습을 성공적으로 결과는웨어 요구 사항이 나와 있습니다.

데이터베이스 명령을 사용하여 데이터베이스를 확인합니다:

RESTORE HEADERONLY FROM DISK = N'<file path\filename>.Bak'
RESTORE VERIFYONLY FROM DISK = N'<file path\filename>.bak'

모두 위의 명령을 표시하는 백업 파일을 유효합니다.

다음은 내가 열리는 이벤트 뷰어와 발견를 나타내는 메시지가 있었는 로그인에 대한 오류 연결 관리자입니다.이 이상했기 때문에 나는 검증된 연결을 테스트 연결 버튼입니다.는 오류되었지에 관련된 어떤 계정을 만들었다고.

이벤트 뷰어 메시지:

*에 대한 설명 이벤트 ID17052 소스에서 MS SQL SERVER 을 찾을 수 없습니다.를 발생시키는 구성 요소를 이 이벤트에 설치되어 있지 않은 로컬 컴퓨터 또는 설치가 손상되었습니다.설치할 수 있는 복구 또는 구성요소에서 로컬 컴퓨터입니다.는 경우 이벤트에서 시작된 다른 컴퓨터,디스플레이 정보를 저장할 수 있었다.

다음과 같은 정보가 포함된 이벤트:

엄격:16 오류가:18456,OS:18456[Microsoft][SQL Server Native 클라이언트 11.0][SQL 서버]로그인하지 못했는 사용자의 도메인\servername$'.*

다음에 로그온한 시스템 xp_delete 었 올바르게 작동하는지 확인합니다.를 검토한 후에 활성 디렉토리를 찾지 못하는 시스템을 계정이 진행하는 이벤트 뷰어를 찾는 유사한 메시지입니다.여기에서 그것을 분명하게 되었 계정에 대한 도메인\서버$이핑 시스템 보안.

다음 단계는 비교하는 데이터베이스 보안 xp_delete 일에 대한 데이터베이스는 그것이 작동하지 않았습니다.가 있었 2 에서 로그인을 보안하는 데이터베이스에 xp_delete 작동하지 않았습니다.2.dll 로그인이었다:NT AUTHORITY\시스템 Windows NT 서비스\다음

후에 추가하는 NT 서비스\다음,xp_delete 성공적으로 일했다.

하나 접근 방식 테스트를 사용하여 유지보수 작업을 삭제 개인 파일입니다.

첫 번째 매개 변수를 0에서 1로 변경하십시오.

여기에 작은 것입니다 요약 xp_delete_file 방금 찾았습니다. 이 절차로 운이 좋지 않은 것처럼 들립니다.

나는 이것이 조금 늙었다는 것을 알고 있지만 내 좌절감을 여러분 모두와 나누고 싶었습니다. 나는이 게시물들과 같은 문제가 있었지만 아무것도 효과가없는 것 같았습니다. 그런 다음 NetLib이라는 데이터베이스에 암호화 계층이 있다는 것을 기억했습니다. 즉, 백업이 암호화되어 XP_DELETE_FILE이 헤더를 읽을 수 없습니다. 이제 OS에서 배치 파일을 사용하여 에이전트 작업에서 호출합니다. 이것이 누군가를 돕기를 바랍니다.

우리는 일반적으로 데이터베이스가 다른 서버로 이동했을 때 또는 SQL 인스턴스가 동일한 서버에 다시 설치 될 때 그러한 상황에 처하게되지만 백업은 이전 디렉토리에 남겨집니다. 예를 들어, 데이터베이스를 Server1에서 Server2로 이동하지만 정기적 인 백업을 수행하거나 Server1에서 SQL 인스턴스를 다시 설치하는 유지 관리 계획이있는 서버가 있습니다.

백업 케이스에서 MSDB에서 정보로 유지되는 세트는 더 이상 존재하지 않으므로 백업 세트가있는 테이블에서 파생 된 실패에서 정보가 확인되지 않으므로 생성 된 모든 이전 백업은 삭제되지 않습니다.

EXECUTE master.sys.xp_delete_file  0, -- FileTypeSelected (0 = FileBackup, 1 = FileReport)

첫 번째 인수는 MSDB의 테이블이 사용되고 있음을 보여줍니다.

이것이 누군가를 돕기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top