sql server中使用xp_cmdshell

关键词:sql server开启高级配置,使用Bat,cmdshell


1
、sql server中使用xp_cmdshell --允许配置高级选项 EXEC sp_configure 'show advanced options',1 GO RECONFIGURE GO 2--开启xp_cmdshell服务 EXEC sp_configure 'xp_cmdshell',1 RECONFIGURE GO 3--使用 xp_cmdshell master..xp_cmdshell 'copy e:databasebackup est.bakm:' 4-- 允许配置高级选项 EXEC sp_configure 'show advanced options', 1 GO RECONFIGURE GO -- 禁用xp_cmdshell EXEC sp_configure 'xp_cmdshell', 0 GO RECONFIGURE GO

sql server中,调用批处理

CREATE PROCEDURE [dbo].[Delete_File]  
@day NVARCHAR(3),  
@url NVARCHAR(100)  
AS  
BEGIN  
 DECLARE @sql NVARCHAR(MAX),@result INT  
 EXEC xp_fileexist 'C:DEL.bat', @result OUTPUT --检查文件DEL.bat存在  
 IF @result=1  
  EXEC xp_cmdshell 'del C:DEL.bat'   
 IF object_id('test','U')IS NOT NULL   --检查test表是否存在  
  DROP TABLE test  
    
 SET @sql='@echo off  
 setlocal enabledelayedexpansion  
 Rem 取'+@day+'天之前的日期,取回放入变量riqi  
 echo wscript.echo dateadd("d",-'+@day+',date) >%tmp%	mp.vbs  
 for /f "tokens=1,2,3* delims=-" %%i in (''cscript /nologo %tmp%	mp.vbs'') do set y=%%i&set m=%%j&set d=%%k  
 if %m% LSS 10 set m=0%m%  
 if %d% LSS 10 set d=0%d%  
 set riqi=%y%%m%%d%  
 set "mulu='+@url+'"  
 for /f "eol= skip=4 tokens=1,4" %%a in (''dir /a-d /tw "%mulu%"^|find /v ^"字节^"'') do (  
 set delrq=%%a  
 set delrq=!delrq:-=!  
 if !delrq! lss %riqi% (  
 del /q "%mulu%\%%~nxb"  
 )  
 )  
 pause'  
 select @sql a INTO test --将批处理脚本放入test表  
 EXEC xp_cmdshell 'bcp "select top 1 a from test" queryout C:DEL.bat -c -T -S127.0.0.1,2433' --将批处理文件导出到C盘根目录下  
 DROP TABLE test --删除test表  
 EXEC xp_cmdshell 'C:DEL.bat'--调用批处理文件  
END  
  
原文地址:https://www.cnblogs.com/gered/p/10310260.html