当前查询完成时执行新查询

ssn*_*ssn 2 sql-server

我正在将一些数据插入 SQL Server (2016)。由于这是手动一次性加载,因此我没有费心花费大量时间以最有效的方式编写它;但是,某些负载所需的时间比最初预期的要长得多 - 所以这是我的问题。

我可以以某种方式告诉服务器在当前查询完成后立即执行另一个查询吗?我本来可以通过在代码的下一部分上按 F5 来手动完成此操作 - 但由于加载时间比预期的要长,我希望服务器在第一部分完成时以某种方式自动执行下一部分代码。

这完全可能,而无需 1) 等待当前查询完成或 2) 取消当前查询并立即重新运行整个批次,包括我的代码的下一步?

希望这是有道理的!

谢谢 :-)

Mar*_*ith 5

假设它只是一个等待完成的语句,您可以先运行以下命令来获取当前请求的开始时间

SELECT start_time FROM sys.dm_exec_requests WHERE session_id = <<spid_of_other_connection>>
Run Code Online (Sandbox Code Playgroud)

然后获得 start_time 在另一个 SSMS 窗口中进行一些简单的轮询

SET NOCOUNT ON;

WHILE EXISTS
(SELECT *
        FROM    sys.dm_exec_requests
        WHERE   session_id = <<spid_of_other_connection>>
                AND start_time = <<start_time_from_above>>)
BEGIN
  WAITFOR DELAY '00:00:10'
END

PRINT 'DO SOMETHING HERE'; 
Run Code Online (Sandbox Code Playgroud)

过滤器 onstart_time而不仅仅是session_id因为session_id如果原始连接关闭,则可以回收。