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

王朝mssql·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

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

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

Author:黄山光明顶

mail:leimin@jxfw.com

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'

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航