Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Co się stanie, jeśli zmienisz procedurę składowaną podczas jej działania?

Właśnie przetestowałem to w SQL Server 2008 R2

Zacząłem od:

CREATE PROCEDURE dbo.Stupid
AS
WAITFOR DELAY '0:00:10'
SELECT TOP 5 * FROM dbo.UniqueId
GO

Następnie wykonałem następująceOkno zapytań SQL Server 1:

EXEC dbo.Stupid

Okno zapytań SQL Server 2, podczas gdy zapytanie w oknie zapytań 1 było uruchomione:

ALTER PROCEDURE dbo.Stupid
AS
WAITFOR DELAY '0:00:05'
SELECT TOP 5 * FROM dbo.UniqueId
WHERE ID > 5
GO

EXEC dbo.Stupid

Okno zapytań SQL Server 3, podczas gdy zapytania w oknie zapytań 1 i oknie zapytań 2 były uruchomione:

EXEC dbo.Stupid

Wyniki:

  • Okno zapytania 1 zostało uruchomione w ciągu 10 sekund (a zatem zakończyło się po oknach 2 i 3) i zwróciło identyfikatory 1–5
  • Okno zapytania 2 zmieniło i uruchomiło procedurę w ciągu 5 sekund i zwróciło identyfikatory 6–10
  • Okno zapytania 3 zostało uruchomione w ciągu 5 sekund i zwróciło identyfikatory 6–10

Co się dzieje:

  • Już wykonywany kod zakończy działanie procedury tak, jak przed uruchomieniem
  • Wszystko, co zaczyna działać po zmianie kodu, uruchomi nowy kod


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ograniczyć użytkownikowi dostęp do obiektów tylko jednego schematu w SQL Server 2008?

  2. Znajdowanie kolejności węzłów w dokumencie XML w SQL Server

  3. Jak określić całkowitą liczbę otwartych/aktywnych połączeń w serwerze ms sql 2005

  4. Dodaj zmienny kolor wiersza do raportu usług raportowania SQL Server

  5. Podsłuchiwanie parametrów (lub fałszowanie) w SQL Server