如何检查存储过程或查询是否仍在SQL Server中运行?
主意
缺陷:
* 当服务器重新启动或过程中出现某种故障时,它会留下未解决的情况。
* 此方法在运行过程之前需要做一些工作,因此不能应用于已经运行的过程。
我希望能有一个可以合并为一个存储过程的解决方案procedure_name
和/或pid
,parameters
作为输入,所以使用SQL
Server的界面将无法正常工作跟踪程序或解决方案。
用法示例:
CREATE PROCEDURE dbo.sp_sleeping_beauty
@time_str varchar(50)
AS
SET NOCOUNT ON;
WAITFOR DELAY @time_str;
GO
dbo.sp_sleeping_beauty '00:00:10'
dbo.sp_sleeping_beauty '00:00:20'
dbo.sp_sleeping_beauty '00:00:30'
该过程应该像
test_if_running 'dbo.sp_sleeping_beauty '00:00:20''
并在运行时(20秒内)返回true,然后在函数失败或系统重新启动后返回false
您可能会查询
sys.dm_exec_requests
其中将提供sesion_ID,等待时间和感兴趣的其他行的sys.dm_exec_sql_text
查询,并使用SQL为您的过程对查询进行交叉应用过滤。
Select * from
(
SELECT * FROM sys.dm_exec_requests
where sql_handle is not null
) a
CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) t
where t.text like 'CREATE PROCEDURE dbo.sp_sleeping_beauty%'
我正在使用CuratorFramework(我还是个新手)来连接Zookeeper实例。我想导入配置,但在此之前,我想测试我的程序是否能够连接到Zookeeper。到目前为止,我有这样的想法: 我已经在本地机器上启动了ZooKeeper,我检查了与zkCli的连接,客户端可以连接到它。zookeeperCon变量设置为“127.0.0.1:2181”(我也尝试了localhost:2181)。问题
问题内容: 我正在写一个基本查询,类似: 我想然后通过使用类似的结果执行: 我的问题是,如何检查? 问题答案: 如果您希望查询可能经常返回行(尤其是很多行),也可以这样做,这可能会提供一个更好的短路机会: …因为它将在到达匹配的第一行后立即返回。 我不建议仅使用它,因为您每次都必须实现(忽略)整个结果集。
我想检查Quartz作业是否正在运行。我发现它可以使用调度程序。getCurrentlyExecutingJobs()。但是我对此感到困惑,我应该把它放在哪里才能得到结果呢?谢谢
问题内容: 如果我具有流程的PID,则os.FindProcess是否足以测试该流程的存在?我的意思是,如果返回,我是否可以认为它已终止(或被杀死)? 编辑: 我刚刚写了一个包装函数(旧式bash流程测试)。这可以正常工作,但是如果有其他解决方案(使用go库完成),我仍然很高兴。 问题答案: 这是查看进程是否处于活动状态的传统的Unix方式-向其发送0信号(就像您对bash示例所做的一样)。 来自
问题内容: 作为构建穷人看门狗并确保应用程序崩溃的一种方法(直到我弄清原因),我需要编写一个PHP CLI脚本,该脚本将由cron每5百万次运行一次,以检查该进程仍在运行。 基于此页面,我尝试了以下代码,但是即使我使用虚假数据对其进行调用,它也始终返回True: 接下来,我尝试了这段代码 … …但是没有达到我的期望: FWIW,此脚本与PHP 5.2.5的CLI版本一起运行,并且操作系统为uCli
问题内容: 如何检查用户是否可以在MS SQL Server中执行存储过程? 我可以通过连接到master数据库并执行以下命令来查看用户是否具有显式执行权限: 但是,如果用户是具有执行权限的角色的成员,则sp_helprotect不会帮助我。 理想情况下,我希望能够打电话给类似 这将返回布尔值。 问题答案: 和