Saya baru saja menguji ini di SQL Server 2008 R2
Saya mulai dengan:
CREATE PROCEDURE dbo.Stupid
AS
WAITFOR DELAY '0:00:10'
SELECT TOP 5 * FROM dbo.UniqueId
GO
Saya kemudian melakukan yang berikutJendela Kueri SQL Server 1:
EXEC dbo.Stupid
SQL Server Query Window 2, saat query di Query Window 1 sedang berjalan:
ALTER PROCEDURE dbo.Stupid
AS
WAITFOR DELAY '0:00:05'
SELECT TOP 5 * FROM dbo.UniqueId
WHERE ID > 5
GO
EXEC dbo.Stupid
SQL Server Query Window 3, saat query di Query Window 1 dan Query Window 2 sedang berjalan:
EXEC dbo.Stupid
Hasil:
- Jendela Kueri 1 berjalan dalam 10 detik (dan karenanya selesai setelah jendela 2 dan 3), dan mengembalikan id 1 - 5
- Jendela Kueri 2 mengubah dan menjalankan prosedur dalam 5 detik, dan mengembalikan id 6 - 10
- Jendela Kueri 3 berjalan dalam 5 detik dan mengembalikan id 6 - 10
Apa yang terjadi:
- Kode yang sudah dieksekusi akan selesai berjalan pada prosedur seperti saat dimulai
- Apa pun yang mulai berjalan setelah kode diubah akan menjalankan kode baru