Sql server 2008 r2 检查文件内容SQL Server 2008 R2

Sql server 2008 r2 检查文件内容SQL Server 2008 R2,sql-server-2008-r2,bcp,fileinfo,Sql Server 2008 R2,Bcp,Fileinfo,我们有一个界面,每天创建三个文件,名称格式如下: FileAYYYYMMDD(示例:FileA20170925) FileBYYYYMMDD(示例:FileB20170925) FileCYYYYMMDD(示例:FileC20170925) 有人需要手动检查以确保这些文件是否为空。我想自动化这个步骤 我想知道的是: 是否有办法通过SQL查询或SQL作业确定这些文件是否为空(是或否就足够了)?根据MatSnow的建议,我能够找到/创建spFileDetails存储过程。使用这个存储过程,我能够创建

我们有一个界面,每天创建三个文件,名称格式如下:

  • FileAYYYYMMDD(示例:FileA20170925)
  • FileBYYYYMMDD(示例:FileB20170925)
  • FileCYYYYMMDD(示例:FileC20170925)
  • 有人需要手动检查以确保这些文件是否为空。我想自动化这个步骤

    我想知道的是:
    是否有办法通过SQL查询或SQL作业确定这些文件是否为空(是或否就足够了)?

    根据MatSnow的建议,我能够找到/创建spFileDetails存储过程。使用这个存储过程,我能够创建SSRS报告,这将帮助我自动化这个过程。此外,我甚至可以通过传递日期参数来评估历史文件:

    declare @FileDATE AS VARCHAR(8) 
    select @FileDATE = (SELECT CONVERT(VARCHAR(10), @ReportDate, 112))
    
    DECLARE @FolderLocation as varchar(200) 
    select @FolderLocation =  ( '\\share\\Validation\File' + @FileDATE + '.txt')
    
    DECLARE @FolderLocationA as varchar(200) 
    select @FolderLocationA = ( '\\share\\Validation\FileA' + @FileDATE + '.txt')
    
    DECLARE @FolderLocationB as varchar(200) 
    select @FolderLocationB = ( '\\share\\Validation\FileB' + @FileDATE + '.txt')
    
    
    DECLARE @TempTable Table(
    [Path] varchar(300),    
    ShortPath   varchar(300),
    [Type]  varchar(20),
    DateCreated  date,
    DateLastAccessed date,  
    DateLastModified    date,
    Attributes  int , 
    size int)
    
    INSERT INTO @TempTable
    Execute dba.dbo.uspGetFileDetails  @FolderLocation
    INSERT INTO @TempTable
    Execute dba.dbo.uspGetFileDetails  @FolderLocationA
    INSERT INTO @TempTable
    Execute dba.dbo.uspGetFileDetails  @FolderLocationB
    
    Select * from @TempTable
    

    根据MatSnow的建议,我能够找到/创建spFileDetails存储过程。使用这个存储过程,我能够创建SSRS报告,这将帮助我自动化这个过程。此外,我甚至可以通过传递日期参数来评估历史文件:

    declare @FileDATE AS VARCHAR(8) 
    select @FileDATE = (SELECT CONVERT(VARCHAR(10), @ReportDate, 112))
    
    DECLARE @FolderLocation as varchar(200) 
    select @FolderLocation =  ( '\\share\\Validation\File' + @FileDATE + '.txt')
    
    DECLARE @FolderLocationA as varchar(200) 
    select @FolderLocationA = ( '\\share\\Validation\FileA' + @FileDATE + '.txt')
    
    DECLARE @FolderLocationB as varchar(200) 
    select @FolderLocationB = ( '\\share\\Validation\FileB' + @FileDATE + '.txt')
    
    
    DECLARE @TempTable Table(
    [Path] varchar(300),    
    ShortPath   varchar(300),
    [Type]  varchar(20),
    DateCreated  date,
    DateLastAccessed date,  
    DateLastModified    date,
    Attributes  int , 
    size int)
    
    INSERT INTO @TempTable
    Execute dba.dbo.uspGetFileDetails  @FolderLocation
    INSERT INTO @TempTable
    Execute dba.dbo.uspGetFileDetails  @FolderLocationA
    INSERT INTO @TempTable
    Execute dba.dbo.uspGetFileDetails  @FolderLocationB
    
    Select * from @TempTable
    

    您应该能够通过存储过程
    spFileDetails
    从中获取文件大小

    如果文件大小为
    0
    ,则文件为空。 这是存储过程的副本。多亏了“菲尔因素”

    /****对象:StoredProcess[dbo]。[spFileDetails]脚本日期:03/28/2007 15:28:15******/
    将ANSI_空值设置为ON
    去
    在上设置带引号的\u标识符
    去
    更改过程[dbo]。[spFileDetails]
    @文件名VARCHAR(100)
    /*
    spFileDetails'c:\autoexec.bat'
    */
    作为
    声明@hr INT,--从返回的HRESULT
    @objFileSystem INT,--文件系统对象
    @objFile INT,--文件对象
    @ErrorObject INT,--错误对象
    @ErrorMessage VARCHAR(255),--潜在的错误消息
    @路径VARCHAR(100)--
    @短路径VARCHAR(100),
    @VARCHAR型(100),
    @DateCreated日期时间,
    @DateLastAccess日期时间,
    @DateLastModified日期时间,
    @属性INT,
    @大小整数
    不计较
    选择@hr=0,@errorMessage='打开文件系统对象'
    EXEC@hr=sp_OACreate'Scripting.FileSystemObject',
    @OBJ3文件系统输出
    如果@hr=0,请选择@errorMessage='Access the file''
    +@文件名+“”“”,
    @ErrorObject=@objFileSystem
    如果@hr=0 EXEC@hr=sp_OAMethod@objFileSystem,
    “GetFile”,@objFile out,@Filename
    如果@hr=0
    选择@errorMessage='getting the attributes of''
    +@文件名+“”“”,
    @ErrorObject=@objFile
    如果@hr=0 EXEC@hr=sp\u OAGetProperty
    @objFile,'Path',@Path OUT
    如果@hr=0 EXEC@hr=sp\u OAGetProperty
    @objFile,'ShortPath',@ShortPath OUT
    如果@hr=0 EXEC@hr=sp\u OAGetProperty
    @objFile,'Type',@Type OUT
    如果@hr=0 EXEC@hr=sp\u OAGetProperty
    @objFile,'DateCreated',@DateCreated OUT
    如果@hr=0 EXEC@hr=sp\u OAGetProperty
    @objFile,'DateLastAccessed',@DateLastAccessed OUT
    如果@hr=0 EXEC@hr=sp\u OAGetProperty
    @objFile,'DateLastModified',@DateLastModified OUT
    如果@hr=0 EXEC@hr=sp\u OAGetProperty
    @objFile,'Attributes',@Attributes OUT
    如果@hr=0 EXEC@hr=sp\u OAGetProperty
    @objFile,'size',@size OUT
    如果@hr0
    开始
    声明
    @源VARCHAR(255),
    @描述VARCHAR(255),
    @帮助文件VARCHAR(255),
    @HelpID INT
    执行sp_OAGetErrorInfo@errorObject,
    @源输出,@Description输出,
    @帮助文件输出,@HelpID输出
    选择@ErrorMessage='Error while'
    +@Errormessage+','
    +@描述
    RAISERROR(@ErrorMessage,16,1)
    结束
    EXEC sp_OADestroy@objFileSystem
    EXEC sp_OADestroy@objFile
    选择[Path]=@Path,
    [短路径]=@ShortPath,
    [Type]=@Type,
    [DateCreated]=@DateCreated,
    [DateLastAccessed]=@DateLastAccessed,
    [DateLastModified]=@DateLastModified,
    [属性]=@属性,
    [size]=@size
    返回@hr
    
    您应该能够通过存储过程
    spFileDetails
    从中获取文件大小

    如果文件大小为
    0
    ,则文件为空。 这是存储过程的副本。多亏了“菲尔因素”

    /****对象:StoredProcess[dbo]。[spFileDetails]脚本日期:03/28/2007 15:28:15******/
    将ANSI_空值设置为ON
    去
    在上设置带引号的\u标识符
    去
    更改过程[dbo]。[spFileDetails]
    @文件名VARCHAR(100)
    /*
    spFileDetails'c:\autoexec.bat'
    */
    作为
    声明@hr INT,--从返回的HRESULT
    @objFileSystem INT,--文件系统对象
    @objFile INT,--文件对象
    @ErrorObject INT,--错误对象
    @ErrorMessage VARCHAR(255),--潜在的错误消息
    @路径VARCHAR(100)--
    @短路径VARCHAR(100),
    @VARCHAR型(100),
    @DateCreated日期时间,
    @DateLastAccess日期时间,
    @DateLastModified日期时间,
    @属性INT,
    @大小整数
    不计较
    选择@hr=0,@errorMessage='打开文件系统对象'
    EXEC@hr=sp_OACreate'Scripting.FileSystemObject',
    @OBJ3文件系统输出
    如果@hr=0,请选择@errorMessage='Access the file''
    +@文件名+“”“”,
    @ErrorObject=@objFileSystem
    如果@hr=0 EXEC@hr=sp_OAMethod@objFileSystem,
    “GetFile”,@objFile out,@Filename
    如果@hr=0
    选择@errorMessage='getting the attributes of''
    +@文件名+“”“”,
    @ErrorObject=@objFile
    如果@hr=0 EXEC@hr=sp\u OAGetProperty
    @objFile,'Path',@Path OUT
    如果@hr=0 EXEC@hr=sp\u OAGetProperty
    @objFile,“短路径”,