Ik heb dit zojuist getest in SQL Server 2008 R2
Ik begon met:
CREATE PROCEDURE dbo.Stupid
AS
WAITFOR DELAY '0:00:10'
SELECT TOP 5 * FROM dbo.UniqueId
GO
Ik deed toen het volgendeSQL Server Query-venster 1:
EXEC dbo.Stupid
SQL Server Query Window 2, terwijl query in Query Window 1 actief was:
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, terwijl queries in Query Window 1 en Query Window 2 actief waren:
EXEC dbo.Stupid
Resultaten:
- Queryvenster 1 liep in 10 seconden (en eindigde daarom na Windows 2 en 3), en gaf id's 1 - 5 terug
- Queryvenster 2 veranderde en voerde de procedure uit in 5 seconden, en gaf id's 6 - 10 terug
- Query Window 3 liep in 5 seconden en leverde id's 6 - 10 op
Wat gebeurt er:
- Als code al wordt uitgevoerd, wordt de procedure voltooid zoals deze was toen ze werden gestart
- Alles dat begint te lopen nadat de code is gewijzigd, voert de nieuwe code uit