SQL 使用..xp_cmdshell 执行相应程序

本文介绍如何在SQL Server中创建定时作业来执行外部应用程序,包括编写批处理文件实现特定功能,如定时访问URL并自动关闭浏览器进程,以及通过SQL Server的xp_cmdshell组件调用这些批处理文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在SQL SERVER 中可以新建作业。执行指定应用程序。达到定时执行某些任务的目的。

新建作业的方法自己搜索。直接 说关键步骤。

一、先把要执行代码写成bat 批处理文件(或都 自己的exe 程序)


@echo off
start  iexplore.exe www.baidu.com
ping -n 10 127.0.0.1>> d:\a.txt
taskkill /f /im iexplore.exe
exit


 这段话的意思是 使用cmd   命令打开IE 并访问一个URL地址。并在十秒后 结束IE 这个进程。时间 可以自己设定。


二、在SQL作业里写SQL代码


EXEC xp_cmdshell 'd:\cmd.bat';

使用 xp_cmdshell 组件 执行 这个批处理文件(或自己的exe 程序)

达到 访问 指定URL 的目的。


如果SQL 提示该 组件被禁用。

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE; 
启用,反之可以将 xp_cmdshell 后面的 1 改为0。即可禁用 
SELECT t.DOCTOR_CODE AS doctorCode, t.DOCTOR_NAME_EN AS doctorNameEn, t.DOCTOR_NAME_CH AS doctorNameCh, spec.subSpecialtyInterestEn, spec.subSpecialtyInterestCh, prov.providerCode, net.networkType, MAX(t.REGION) AS region, CASE WHEN t3.NETWORK_TERMINATION_DATE IS NULL AND t3.NETWORK_CREATION_DATE IS NOT NULL THEN CASE WHEN GETDATE() >= t3.NETWORK_CREATION_DATE THEN 'Y' ELSE 'N' END WHEN t3.NETWORK_CREATION_DATE IS NOT NULL AND t3.NETWORK_TERMINATION_DATE IS NOT NULL THEN CASE WHEN GETDATE() BETWEEN t3.NETWORK_CREATION_DATE AND t3.NETWORK_TERMINATION_DATE THEN 'Y' ELSE 'N' END WHEN t3.NETWORK_CREATION_DATE IS NOT NULL THEN CASE WHEN GETDATE() < t3.NETWORK_TERMINATION_DATE THEN 'N' ELSE 'Y' END ELSE 'N' END AS activeAxaNetwork FROM T_DOCTOR_PROFILE t OUTER APPLY ( SELECT STRING_AGG(SUB_SPECIALTY_INTEREST_EN, ', ') WITHIN GROUP (order by SUB_SPECIALTY_INTEREST_EN), STRING_AGG(SUB_SPECIALTY_INTEREST_CH, ', ') within group ( order by SUB_SPECIALTY_INTEREST_CH ) FROM ( SELECT DISTINCT t2.SUB_SPECIALTY_INTEREST_EN, t2.SUB_SPECIALTY_INTEREST_CH FROM T_DOCTOR_SPECIALTY_INFORMATION t2 WHERE t2.DOCTOR_CODE = t.DOCTOR_CODE AND t2.deleted_flag = '0' ) AS specs ) spec(subSpecialtyInterestEn, subSpecialtyInterestCh) OUTER APPLY ( SELECT STRING_AGG(PROVIDER_CODE, '; ') FROM ( SELECT DISTINCT t3.PROVIDER_CODE FROM T_NETWORK_DOCTOR_PROVIDER_RELATION t3 WHERE t3.DOCTOR_CODE = t.DOCTOR_CODE AND t3.deleted_flag = '0' ) AS provs ) prov(providerCode) OUTER APPLY ( SELECT STRING_AGG(SERVICE_AREA, ', ') FROM ( SELECT DISTINCT t4.SERVICE_AREA FROM T_NETWORK_DOCTOR_PROVIDER_RELATION t3 JOIN T_NETWORK_DOCTOR_PROVIDER t4 ON t3.NETWORK_CODE = t4.NETWORK_CODE WHERE t3.DOCTOR_CODE = t.DOCTOR_CODE AND t3.deleted_flag = '0' AND t4.deleted_flag = '0' ) AS nets ) net(networkType) LEFT JOIN T_NETWORK_DOCTOR_PROVIDER_RELATION t3 ON t3.DOCTOR_CODE = t.DOCTOR_CODE AND t3.deleted_flag = '0' WHERE t.deleted_flag = '0' and t.DOCTOR_CODE = 'DOC001' GROUP BY t.id , t.DOCTOR_CODE, t.DOCTOR_NAME_EN, t.DOCTOR_NAME_CH, spec.subSpecialtyInterestEn, spec.subSpecialtyInterestCh, prov.providerCode, net.networkType, t3.NETWORK_TERMINATION_DATE, t3.NETWORK_CREATION_DATE order by t.id; -- ) -- AS subquery -- WHERE subquery.activeAxaNetwork = 'Y'; 我使用Sqlserver 数据库版本是2017以上这个sql为什么不能执行
最新发布
06-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值