SQL Server 2008 R2 でこれをテストしました
私は以下から始めました:
CREATE PROCEDURE dbo.Stupid
AS
WAITFOR DELAY '0:00:10'
SELECT TOP 5 * FROM dbo.UniqueId
GO
次に、SQL Server クエリ ウィンドウ 1: を実行しました。
EXEC dbo.Stupid
SQL Server クエリ ウィンドウ 2、クエリ ウィンドウ 1 のクエリ実行中:
ALTER PROCEDURE dbo.Stupid
AS
WAITFOR DELAY '0:00:05'
SELECT TOP 5 * FROM dbo.UniqueId
WHERE ID > 5
GO
EXEC dbo.Stupid
クエリ ウィンドウ 1 とクエリ ウィンドウ 2 でクエリを実行中に、SQL Server クエリ ウィンドウ 3:
EXEC dbo.Stupid
結果:
- クエリ ウィンドウ 1 は 10 秒で実行され (したがって、ウィンドウ 2 と 3 の後に終了)、ID 1 から 5 が返されました
- クエリ ウィンドウ 2 が変更され、手順が 5 秒で実行され、ID 6 ~ 10 が返されました
- クエリ ウィンドウ 3 は 5 秒で実行され、ID 6 ~ 10 が返されました
何が起こるか:
- すでに実行中のコードは、開始されたときと同じ手順で実行を完了します
- コードが変更された後に実行を開始するものはすべて、新しいコードを実行します