存储过程是否能够从OS中删除文件?

时间:2009-08-18 17:06:09

标签: sql-server sql-server-2005 stored-procedures

出于好奇,存储过程是否能够从操作系统中删除文件?

如果不是,我将不得不制作一个删除文件的Windows批处理文件,然后使用OSQL运行存储过程。

3 个答案:

答案 0 :(得分:6)

从技术上讲,使用正确的权限,您可以执行xp_cmdshell向操作系统发出命令(或调用批处理文件,无论如何),但这可能不是一个好主意。如果您确实使用该方法,则对权限要求非常严格。

为了清晰而编辑。

答案 1 :(得分:3)

试试这个

选项1 使用xp_cmdshell删除文件

xp_cmdshell 'del y:\file.dat'

选项2 使用OLE自动化删除文件

DECLARE @ResultOP int
DECLARE @OLE_Obj  int

EXEC @ResultOP = sp_OACreate 'Scripting.FileSystemObject', @OLE_Obj OUTPUT
EXEC @ResultOP = sp_OAMethod @OLE_Obj, 'DeleteFile', NULL, 'y:\file.dat'
EXEC @ResultOP = sp_OADestroy @OLE_Obj

答案 2 :(得分:1)

您也可以使用CLR存储过程。这是托管存储过程存在的主要原因之一,是以安全的方式与操作系统进行交互。