| Termin | Definicja |
|---|---|
| NATIVE_COMPILATION | NATIVE_COMPILATION to opcja procedury składowanej powodująca jej skompilowanie do kodu maszynowego przy tworzeniu. NATIVE_COMPILATION w procedurach składowanych SQL Server
W praktyce SQL Server tworzy dla takiej procedury bibliotekę DLL zawierającą skompilowany kod. Informacje potrzebne do ponownego utworzenia tej biblioteki pozostają w metadanych bazy danych, natomiast sama wygenerowana DLL nie jest częścią kopii zapasowej bazy. Po ponownym uruchomieniu bazy lub serwera kod może zostać odtworzony z metadanych. Dla procedur składowanych kompilacja może być odroczona do pierwszego wykonania, dlatego brak procedury w widoku załadowanych modułów bezpośrednio po restarcie nie musi oznaczać błędu. Wymagana konstrukcja procedury i powiązanie ze schematemSama opcja
Wydajność, ograniczenia i zachowanie planu wykonaniaNative compilation może ograniczyć koszt obsługi często wykonywanej logiki transakcyjnej, zwłaszcza gdy procedura przetwarza wiele wierszy, wykonuje agregacje, złożone wyrażenia, instrukcje warunkowe, pętle albo serię operacji Natywnie kompilowane moduły nie obsługują całej powierzchni języka T-SQL dostępnej dla zwykłych procedur. Przed użyciem trzeba sprawdzić, czy stosowane zapytania, funkcje, operatory, typy danych i instrukcje sterujące są wspierane w danej wersji SQL Server. Ograniczenia dotyczą między innymi części konstrukcji dynamicznego SQL, niektórych sposobów sortowania, kursorów i wybranych funkcji systemowych. Procedura nie jest automatycznie rekompilowana tylko dlatego, że zmieniły się dane w tabeli. Podczas analizy należy więc odróżnić problem wynikający z nieaktualnych statystyk, problem z planem zapytania i ograniczenie wynikające z native compilation. Warto również zweryfikować sposób przekazywania parametrów. Zgodność typów parametrów po stronie aplikacji i definicji procedury ogranicza niepotrzebne konwersje. Do pomiaru można wykorzystać statystyki wykonywania procedur natywnie kompilowanych oraz zdarzenia Extended Events. Opcje Sprawdzanie błędów kompilacji i diagnostyka proceduryBłąd przy tworzeniu lub pierwszym uruchomieniu procedury z Podczas przeglądu warto porównać wynik procedury natywnej z odpowiednikiem wykonywanym jako standardowy moduł T-SQL. Należy sprawdzić wartości parametrów, liczbę zmienionych wierszy, zachowanie w przypadku błędu oraz granice transakcji. Przydatne jest monitorowanie modułów załadowanych do pamięci, statystyk wykonania i zdarzeń Extended Events, a także kontrola, czy procedura rzeczywiście odwołuje się do oczekiwanych tabel memory-optimized. Pliki DLL i pliki pośrednie generowane przez SQL Server nie powinny być ręcznie modyfikowane ani usuwane; ich tworzeniem, ładowaniem i sprzątaniem zarządza silnik bazy danych. W środowisku laptopa lub komputera PC analiza takiego problemu wymaga dostępu do właściwej instancji SQL Server, dzienników oraz skryptu definicji, ponieważ objaw widoczny w aplikacji może być tylko skutkiem błędu kompilacji albo nieobsługiwanej konstrukcji procedury. |