Ponownej kompilacji procedury przechowywanej

Jak bazy danych zostanie zmieniony przez działania, takie jak dodawanie indeksy lub zmiana danych w indeksowanych kolumnach, oryginalne plany kwerend, umożliwiające dostęp do jego tabel należy ponownie zoptymalizowane przez nich kompilację.Optymalizacja automatycznie występuje pierwszy czas procedura składowana jest uruchamiane SQL Server jest ponownie uruchamiany.Zachodzi także jeśli tabela źródłowa wykorzystywanej przez zmiany procedura składowana.Ale jeśli nowy indeks zostanie dodany, z którego może korzystać procedury przechowywanej, optymalizacja nie występuje aż do następnego czas uruchomienie procedury przechowywanej w SQL Server jest ponownie uruchamiany.W tej sytuacji może być przydatne wymusić ponowną kompilację następnej procedura składowana czas on wykonującego

Inny powód, aby wymusić ponowną kompilację procedura składowana jest do przeciwdziałania, gdy jest to konieczne, "Wykrywanie parametr" zachowanie kompilacji procedura składowana.Gdy SQL Server wykonuje procedury przechowywane wartości parametrów używanych przez procedurę kompiluje są częścią generowanie planu kwerend.Jeśli wartości te reprezentują te typowe z procedurą nazywane później, następnie korzyści procedura składowana z planu kwerend co czas on kompiluje i wykonuje.Jeśli nie, wydajnooć może spaoć.

SQL Server 2008 R2 Funkcje instrukcja -poziom ponowną kompilację procedur przechowywanych.Gdy SQL Server 2008 R2 ponownych kompilacji procedury przechowywane, skompilowany instrukcja, która spowodowała ponowną kompilację, zamiast całej procedury.W wyniku SQL Server używa wartości parametrów, jakie istnieją w instrukcja ponownej podczas regenerowany planu kwerend.Wartości te mogą się różnić od tych, które pierwotnie były przekazywane do procedury.

Wymuszanie ponowną kompilację procedury przechowywanej

SQL Serverudostępnia trzy sposoby wymusić ponowną kompilację procedura składowana:

  • Sp_recompile systemową procedurę przechowywaną Wymusza ponowną kompilację procedura składowana następnego czas , który jest uruchamiany.Odbywa się to poprzez usunięcie istniejącego planu z pamięci podręcznej procedur wymuszanie nowego planu do utworzenia następnego czas uruchomienia procedury.

  • Tworzenie procedura składowana, która określa opcja WITH RECOMPILE w definicję wskazuje, że SQL Server nie buforuje planu procedura składowana; procedura składowana jest ponownie kompilowana co czas , który jest wykonywany.Opcja WITH RECOMPILE gdy procedury przechowywane parametry, których wartości różnią się między wykonania procedura składowana i spowodować wykonanie różnych planów do utworzenia każdego czas.Użycie tej opcji jest mało prawdopodobna i powoduje procedura składowana, aby wykonać wolniej, ponieważ procedura składowana musi być ponownie skompilowana co czas , który jest wykonywany.

    Tylko pojedyncze kwerendy wewnątrz procedura składowana, aby ponownie skompilowana, zamiast pełnej procedura składowana, określić do ponownej kompilacji kwerendy wskazówkę dotyczącą wewnątrz każdej kwerendy mają być ponownie kompilowana.Zachowanie to naśladuje SQL Server's instrukcja -poziom zachowanie ponowną kompilację wspomniano wcześniej w tej sekcji, ale oprócz bieżącej wartości parametrów procedura składowana, wskazówki dotyczącej kwerendy RECOMPILE także używa wartości wszelkich zmiennych lokalnych wewnątrz procedura składowana przygotowując instrukcja.Ta opcja nietypowe lub tymczasowych wartości są używane w podzbiór kwerend, które należą do procedura składowana.Aby uzyskać więcej informacji, zobacz Wskazówkę dotyczącą kwerendy języka Transact-SQL ().

  • Można wymusić procedura składowana, aby ponownie skompilowana określając WITH RECOMPILE opcji, gdy użytkownik wykonać procedura składowana.Tej opcji należy używać tylko, jeśli parametr jest dostarczenie jest nietypowe lub danych zmieniła się znacząco od czasu utworzenia procedura składowana.

    Ostrzeżenie

    Jeśli obiekt odwołuje się procedura składowana jest usunięte lub zmieniono jego nazwę, zwracany jest błąd podczas wykonywania procedura składowana.Jednakże jeśli obiekt, do którego odwołuje się procedura składowana jest zastępowany obiekt o tej samej nazwie, procedura składowana wykonuje się bez konieczności utworzony.

Ponowną kompilację procedura składowana następnego czas , który jest uruchamiany