2016-11-16 3 views
-1

YYMMDDhhmm 형식의 타임 스탬프를 사용하여 C: 드라이브에 매일 3 개의 파일이 제공됩니다. 예를 들면. TotalSale16111600372016-11-16 12:37 amSQL Server에서 와일드 카드를 사용하여 파일을 검사 중입니다. 2014

TotalSale1611160037 
RegionSale1611160037 
Statesale1611160037 

내가 SQL 서버에이 3 개 파일을로드하기 위해 SQL Server 에이전트에서 작업을 예약 한 의미 2014 년

내 요구 사항은 로딩 작업을 시작하기 전에, 나는 3 있는지 확인해야 할 것입니다 파일은 C: 드라이브에 있습니다. 드라이브는 C: 드라이브에 3 개의 파일이있는 경우에만 작업을 실행해야합니다.

C: 드라이브에 이러한 파일이없는 경우로드 작업을 실행하지 않아야하며 누락 된 파일을 나타내는 데이터베이스 전자 메일을 보냅니다.

파일의 첫 번째 부분 (TotalSale, RegionSale, Statesale)은 매일 동일합니다. 타임 스탬프 (1611160037) 만 변경됩니다. 로드 프로세스가 끝나면 해당 파일을 다른 폴더로 옮깁니다.

도와주세요. SQL Server에서 와일드 카드 문자를 사용하여 파일이 존재하는지 확인하는 방법을 모르겠습니다.

는 시간 내 주셔서 감사하고 SQL 작업을 실행하고 다음 T-SQL을 사용

+0

가 xp_cmdshell을을 포함 SQL에서이 작업을 수행하는 방법이 있지만, 그것은이다 보안 문제. 이 응용 프로그램 계층에 넣을 것을 제안합니다 .net 또는 java 및 SQL Server에서이 모든 코딩 대신 응용 프로그램 계층에서 SQL Server SP 트리거합니다 – Surendra

+0

[파일이 있는지 확인하거나 SQL Server에 없습니다. ?] (http://stackoverflow.com/questions/11740000/check-for-file-exists-or-not-in-sql-server) – Doliveras

+0

일반적으로 SSIS 스크립트 작업과 System.IO.File.Exists를 사용합니다.() 함수 및/또는 system.io.directoryinfo.getfiles를 열고 루프하여 원하는 파일이 있는지 확인하십시오. – Matt

답변

0

을 만들 수 있도록 도와

Declare @AllFilesExist INT = 0 
     ,@BasePath VARCHAR(100) = 'D:\backups' 

Declare @Files TABLE ([FileName] VARCHAR(100), Depth INT, [File] INT) 

INSERT INTO @Files 
EXEC master.sys.xp_dirtree @BasePath,1,1; 


Select TOP 1 @AllFilesExist = 1 
FROM @Files 
WHERE EXISTS (SELECT 1 
       FROM @Files 
       WHERE [FileName] LIKE '%TotalSale%') 
AND EXISTS ( SELECT 1 
       FROM @Files 
       WHERE [FileName] LIKE '%RegionSale%') 
AND EXISTS ( SELECT 1 
       FROM @Files 
       WHERE [FileName] LIKE '%Statesale%') 

-- Now use @AllFilesExist Variable to decide the execution flow in your SSIS package