如何在SQL SERVER 2000中删除系统文件?

/*****************************************************************************************************************

在SQL Server 2000的开发过程中有时会遇到要判断和删除系统级别的一些文件,这是通过SQL Server2000提供的一些系统函数可以非常方便的完成相应的功能.下面是我写的一个实列:

Author:黄山光明顶

mail:[email protected]

version:1.0.0

date:2004-1-30

(如需转载,请注明出处!)

*********************************************************************************************************/
if exists (select * from sysobjects where id =
object_id('dbo.usp_DeleteFile') and sysstat & 0xf = 4)
drop procedure usp_DeleteFile
GO
CREATE PROCEDURE usp_DeleteFile
@filename varchar(255),
@path varchar(1024)
AS
BEGIN

DECLARE @rc int
Declare @space_num int
Declare @debug int
Declare @tempPath varchar(1024)
Declare @tempdel varchar(1024)

Select @rc=0
Select @space_num=0

Select @debug=0

Select @tempPath=''
Select @tempdel=''
set nocount ON

/***************************************************************************


  • Check whether @filename is null

**********/
if @filename is null
begin
PRINT 'Please input file name'
select @rc=-90001
return @rc
end

/***************************************************************************


  • Check whether @path is null

**********/
if @path is null
begin
PRINT 'Please input delete file directory(exclude space)'
select @rc=-90002
return @rc
end

/***************************************************************************


  • Check whether @path includes space
  • if the OS is windows 2000 ,please confirm the path not includes space!!

**********/
select @space_num=charindex(' ',@path)
if @space_num>0
begin
while charindex(' ',@path)>0
begin
select @tempPath=@tempPath+left(@path,charindex(' ',@path))
select @path=ltrim(right(@path,len(@path)-charindex(' ',@path)))
end

select @temppath=@temppath+@path
select
@temppath=stuff(replace(@temppath,'','""')+'"',1,3,left(@temppath,2))+''+
@filename

if @debug=1
begin
print @temppath
end

end

SELECT @temppath=@path+''+@filename

if @debug=1
BEGIN
print @temppath
END

/***************************************************************************


  • Create temp table to records file information

**********/
Create table #fileexists(doesexist smallint,fileindir smallint,direxist
smallint)
if @rc=0
begin

insert into #fileexists exec master..xp_fileexist @temppath
if exists (select 1 from #fileexists where #fileexists.doesexist=1)
begin
select @tempdel='del '+@temppath
if @debug=1
BEGIN
print @tempdel
END
exec @rc=master..xp_cmdshell @tempdel,no_output
if @rc<>0
begin
print 'Deleting file faile,May be file in useing!'
drop table #fileexists
select @rc=-90003
return @rc
end
else
begin
print 'Deleting file sucessfully!'
end

end
else
begin
print 'Please check the directory and filename.the input file not
exist!'
end

end

drop table #fileexists
return @rc
END
go
exec usp_DeleteFile 'test.txt','c:\temp'

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus