如何在SQL SERVER 2000中删除系统文件?
发表于:2007-07-02来源:作者:点击数:
标签:
/***************************************************************************************************************** 在SQL Server 2000的 开发 过程中有时会遇到要判断和删除系统级别的一些文件,这是通过SQL Server2000提供的一些系统函数可以非常方便
/*****************************************************************************************************************
在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 @de
bug 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@#
原文转自:http://www.ltesting.net