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存储过程。使用这个存储过程,我能够创建
是否有办法通过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,“短路径”,