从数据库中删除与物理文件条目不匹配的记录

时间:2011-10-14 10:07:59

标签: sql sql-server-2008 file

我有一个包含文件名和确切路径的表,即XYZ.txt C:/Test/XYZ.txt 存在少数完整性问题,案例:文件名和位置存在于数据库中但在物理文件位置上,文件不存在。 我有办法,我可以在SQL 2008中编写一个代码,用于检查和删除数据库中的文件条目,如果文件在提供的位置不存在。

提前致谢。

2 个答案:

答案 0 :(得分:1)

declare @file_path  nvarchar(500)
declare @file_exists    int

set @file_path = 'C:\temp.txt'

**exec master.dbo.xp_fileexist
    @file_path,
    @file_exists output**

select @file_exists
Print   'File '+isnull(@file_path,'NULL')+' '+
    case when @file_exists = 1
    then 'exists'
    else 'does not exist' end ;

此脚本检查文件是否存在。您可以添加逻辑以从数据库中删除文件条目。

希望有所帮助。

答案 1 :(得分:0)

使用如下代码,您可以根据查询的输出找出

  declare   @Path varchar(128) ,
    @FileName varchar(128)
    select  @Path = 'C:\' ,
        @FileName = 'myfile.txt'

declare @objFSys int
declare @i int
declare @File varchar(1000)

    select @File = @Path + @FileName
    exec sp_OACreate 'Scripting.FileSystemObject', @objFSys out
    exec sp_OAMethod @objFSys, 'FileExists', @i out, @File
    if @i = 1
        print 'exists'
    else
        print 'not exists'
    exec sp_OADestroy @objFSys 

网站上的更多内容Check if file exists