Právě jsem to testoval v SQL Server 2008 R2
Začal jsem s:
CREATE PROCEDURE dbo.Stupid
AS
WAITFOR DELAY '0:00:10'
SELECT TOP 5 * FROM dbo.UniqueId
GO
Poté jsem provedl následujícíokno SQL Server Query 1:
EXEC dbo.Stupid
Okno dotazu SQL Server 2, když byl spuštěn dotaz v okně dotazu 1:
ALTER PROCEDURE dbo.Stupid
AS
WAITFOR DELAY '0:00:05'
SELECT TOP 5 * FROM dbo.UniqueId
WHERE ID > 5
GO
EXEC dbo.Stupid
Okno dotazu SQL Server 3, zatímco byly spuštěny dotazy v okně dotazu 1 a okně dotazu 2:
EXEC dbo.Stupid
Výsledky:
- Okno dotazu 1 se spustilo za 10 sekund (a proto skončilo po oknech 2 a 3) a vrátilo ID 1 až 5
- Dotazové okno 2 se změnilo a spustilo proceduru za 5 sekund a vrátilo ID 6–10
- Okno dotazu 3 se spustilo za 5 sekund a vrátilo ID 6–10
Co se stane:
- Již spouštěný kód dokončí běh procedury tak, jak byl při spuštění
- Cokoli, co se spustí po změně kódu, spustí nový kód