出于好奇,存储过程是否能够从操作系统中删除文件?
如果不是,我将不得不制作一个删除文件的Windows批处理文件,然后使用OSQL运行存储过程。
答案 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存储过程。这是托管存储过程存在的主要原因之一,是以安全的方式与操作系统进行交互。