2016-11-16 6 views
-1

У меня будет 3 ежедневных файла, поступающих на мой C: диск с отметками времени в формате YYMMDDhhmm. напр. TotalSale1611160037 означает 2016-11-16 12:37 amПроверка файлов существует с использованием wild card в SQL Server 2014

TotalSale1611160037 
RegionSale1611160037 
Statesale1611160037 

Я запланировал работу агента SQL Server, чтобы загрузить эти 3 файла в SQL Server 2014.

Мое требование, что перед началом работы загрузки, мне нужно проверить, если 3 файлы присутствуют на диске C:. Работа должна выполняться только в том случае, если 3 файла присутствуют на диске C:.

Если какой-либо из этих файлов отсутствует на диске C:, задание загрузки не должно запускаться и отправлять электронную почту базы данных, показывающую, какие файлы отсутствуют.

Первая часть файлов (TotalSale, RegionSale, Statesale) будет одинаковой каждый день; изменится только временная метка (1611160037). После процесса загрузки я переместлю эти файлы в другую папку.

Пожалуйста, помогите мне. Я не знаю, как проверить файлы, используя символы wild card в SQL Server.

Спасибо за ваше время и помочь

+0

Есть способы сделать это в SQL, который включает в себя xp_cmdshell, но это проблема безопасности. Я предлагаю вам поместить это на прикладном уровне, то есть использовать .net или java, а затем запустить SQL-сервер SQL из уровня приложения вместо кодирования всего этого в SQL Server – Surendra

+0

Возможный дубликат [Проверить файл существует или нет в SQL-сервере ?] (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

Создать Execute SQL Task и использовать следующие T-SQL

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 

 Смежные вопросы

  • Нет связанных вопросов^_^