【发布时间】:2016-11-16 16:37:25
【问题描述】:
我每天都会有 3 个文件进入我的 C: 驱动器,时间戳采用 YYMMDDhhmm 格式。例如。 TotalSale1611160037 表示2016-11-16 12:37 am
TotalSale1611160037
RegionSale1611160037
Statesale1611160037
我已经在 SQL Server 代理中安排了一个作业,将这 3 个文件加载到 SQL Server 2014 中。
我的要求是在开始加载作业之前,我需要检查C: 驱动器上是否存在这3 个文件。仅当 C: 驱动器上存在 3 个文件时,作业才应运行。
如果C: 驱动器上缺少这些文件中的任何一个,则加载作业不应运行并发送数据库电子邮件以显示哪些文件丢失。
文件的第一部分(TotalSale,RegionSale,Statesale)每天都一样;只有时间戳 (1611160037) 会改变。在加载过程之后,我会将这些文件移动到另一个文件夹中。
请帮助我。我不知道如何在 SQL Server 中使用通配符检查文件是否存在。
感谢您的宝贵时间和帮助
【问题讨论】:
-
在 SQL 中有一些方法可以做到这一点,包括 xp_cmdshell,但这是一个安全问题。我建议你把它放在应用层,即使用.net或java,然后从应用层触发sql server SP,而不是在SQL Server中编码
-
通常您会使用 SSIS 脚本任务和 System.IO.File.Exists() 函数和/或 system.io.directoryinfo.getfiles 并循环查看您想要的文件是否存在。
标签: sql-server ssis ssis-2012