当前位置: 首页 > 面试题库 >

检查存储过程是否正在运行

南门烈
2023-03-14
问题内容

如何检查存储过程或查询是否仍在SQL Server中运行?

主意

  1. 我曾经想过要在过程开始时在哪里写日志,并在过程结束时将日志删除。

缺陷:

* 当服务器重新启动或过程中出现某种故障时,它会留下未解决的情况。
* 此方法在运行过程之前需要做一些工作,因此不能应用于已经运行的过程。
  1. 使用过程监控器

我希望能有一个可以合并为一个存储过程的解决方案procedure_name和/或pidparameters作为输入,所以使用SQL
Server的界面将无法正常工作跟踪程序或解决方案。

更新#1

用法示例:

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不会帮助我。 理想情况下,我希望能够打电话给类似 这将返回布尔值。 问题答案: 和