Parametryzacja wymuszony
Można zastąpić domyślną parametryzacja proste zachowanie SQL Server określając być sparametryzowana wszystkich wybierz INSERT, UPDATE i DELETE instrukcji w bazie danych, z zastrzeżeniem niektórych ograniczeń.Parametryzacja wymuszone jest włączona przez ustawienie opcji PARAMETRYZACJA WYMUSZONY w ALTER DATABASE instrukcja.Wymuszone Parametryzacja może zwiększyć wydajność niektórych baz danych, poprzez zmniejszenie częstotliwości kompilacji kwerendy i ponowne kompilacje.Bazy danych, które mogą korzystać z parametryzacja wymuszone są zazwyczaj występują duże ilości kwerend współbieżnych ze źródeł, takich jak aplikacje szacunkowe.
Gdy opcja PARAMETRYZACJA jest zestaw wartość WYMUSZONE, wszelkie literału w SELECT, instrukcja INSERT, UPDATE lub DELETE, przedstawione w jakiejkolwiek formie jest konwertowany na parametr podczas kompilacji kwerendy.Wyjątkami są literały, które pojawiają się w następujące konstrukcje kwerendy:
WSTAW...WYKONYWANIE instrukcji.
Statements inside the bodies of stored procedures, triggers, or user-defined functions.SQL Server already reuses query plans for these routines.
Przygotowanych instrukcji, które już została sparametryzowana aplikacji klient.
Sprawozdania, które zawierają wywołania metody XQuery, w którym metoda pojawia się w kontekście gdzie jej argumentów będzie zazwyczaj być sparametryzowana, takich jak klauzula WHERE.Jeśli metoda pojawia się w kontekście, gdzie argumenty nie byłyby sparametryzowana, jest sparametryzowana pozostałej części instrukcja.
Instrukcje wewnątrz Transact-SQL kursor.(Instrukcje SELECT wewnątrz kursory API są parametryzowane.)
Konstrukcje zaniechane kwerendy.
Dowolna instrukcja jest uruchamiany w kontekście spowodowałyby lub ANSI_NULLS zestaw do OFF.
Instrukcje, zawierające więcej niż 2,097 literały, które kwalifikują się do parametryzacja.
Sprawozdania, które odwołują się do zmiennych, takich jak WHERE T.col2 >= @bb.
Instrukcje, zawierające wskazówki dotyczącej kwerendy RECOMPILE.
Instrukcje, zawierające klauzula obliczeń.
Instrukcje zawierające gdzie bieżący z klauzula.
Ponadto następujące klauzule kwerendy nie są parametryzowane.Należy zauważyć, że w tych przypadkach, nie są parametryzowane tylko klauzul.Wymuszone parametryzacji mogą kwalifikować się inne klauzule w obrębie tej samej kwerendy.
<Select_list> żadnych instrukcja SELECT.Obejmuje to listy SELECT podkwerendy i wybierz listy wewnątrz instrukcji INSERT.
Podkwerendą instrukcja SELECT, które pojawiają się wewnątrz instrukcja Jeżeli.
U góry, TABLESAMPLE, POSIADAJĄCE, Grupuj według, ORDER BY, wyjściowe...DO lub klauzul XML kwerendy.
Argumenty bezpośrednio lub jako browserCaps OPENROWSET, OTWÓRZKWERENDĘ, OPENDATASOURCE, OPENXML lub dowolny operator PEŁNOTEKSTOWY.
Wzoru i escape_character argumenty klauzula LIKE.
Styl argument klauzula konwersji.
Stałe całkowitą wewnątrz tożsamości klauzula.
Stałych określonych przy użyciu składni rozszerzenia ODBC.
Stała składane wyrażeń, które są argumenty +, -, *, i Operatorzy %.Rozważając kwalifikujące wymuszone parametryzacji SQL Server uważa wyrażenie jest składane stała, gdy spełniony jest jeden z następujących warunków:
Brak kolumn, zmiennych lub podkwerendy są wyświetlane w wyrażenie.
Wyrażenie zawiera sprawy klauzula.
Więcej informacji o stała składane wyrażeń, zobacz Rozwiązywanie problemów z niską wydajność kwerendy: Stała składania i oceny wyrażenie podczas szacowania Kardynalność.
Argumenty klauzul wskazówkę dotyczącą kwerendy.Obejmują one number_of_rows argument Szybkie kwerendy wskazówkę dotyczącą number_of_processors argument wskazówkę dotyczącą kwerendy MAXDOP i number argumentu wskazówkę dotyczącą kwerendy MAXRECURSION.
Parametryzacja występuje poziom indywidualnego Transact-SQL instrukcji.Innymi słowy są parametryzowane pojedyncze instrukcje w partia.Po kompilacji, kwerenda parametryczna jest wykonywany w kontekście partia, w którym został pierwotnie złożony.Jeśli jest buforowany plan wykonania kwerendy, można określić, czy kwerenda została sparametryzowana przy odwoływaniu się do sql kolumna sys.syscacheobjects dynamiczny widok zarządzania.Jeśli kwerenda jest sparametryzowana, nazwy i typy danych parametrów są dostarczane przed tekstem partia przesłanych w tym kolumna, takich jak (@ 1 tinyint).Informacji na temat buforowania planu kwerend, zobacz Wykonanie planu buforowania i ponownego użycia.
Ostrzeżenie
Nazwy parametrów są dowolne.Użytkownicy lub aplikacje nie powinny polegać na określonej kolejności nazewnictwa.Ponadto, można zmienić następujące między wersjami SQL Server i aktualizacje dodatków usługa pack: Nazwy parametrów, wybór literały, które są parametryzowane i odstępy w tekście sparametryzowanej.
Typy danych parametrów
Gdy SQL Server parameterizes literały, parametry są konwertowane na następujące typy danych:
Literały liczby całkowitej wielkości w przeciwnym razie byłyby dopasowanie w int parameterize typ danych do int.Większy literały całkowitą, które są częściami predykaty obejmujących dowolny operator porównania (obejmuje <, <=, =,! =, >, >=,!<, !>, <>, Wszystkie, wszelkie, niektóre, BETWEEN i W) parameterize do numeric(38,0).Większe literały, które nie są częściami predykaty obejmujących operatory porównania parameterize do numeric których dokładność jest na tyle duża do obsługi jego rozmiar i których skali 0.
Literałów numerycznych stałoprzecinkowych, które są częściami predykaty obejmujących operatory porównania parameterize do numeric których dokładność jest 38 i których skala jest na tyle duża do obsługi jego rozmiar.Literałów numerycznych stałoprzecinkowych, które nie są częściami predykaty obejmujących operatory porównania parameterize do numeric których precyzji i skali są tylko wystarczająco duże do obsługi jego rozmiar.
Ruchomy punkt literałów numerycznych parameterize do float(53).
Standardu Unicode ciąg literałów parameterize do varchar(8000) Jeśli literał mieści się wewnątrz 8000 znaków i varchar(max) , jeśli jest większy niż 8000 znaków.
Unicode ciąg literałów parameterize do nvarchar(4000) Jeśli literał mieści się wewnątrz 4000 znaków Unicode i nvarchar(max) Jeśli literał jest większy niż 4 000 znaków.
Literały binarne parameterize do varbinary(8000) Jeśli literał mieści się w ramach 8000 bajtów.Jeśli jest większy niż 8000 bajtów jest konwertowany na varbinary(max).
Literały typu Money parameterize do money.
Wskazówki dotyczące używania zmuszony parametryzacja
Należy uwzględnić następujące po możesz zestaw opcję PARAMETRYZACJA WYMUSZONY:
Parametryzacja wymuszone, zmienia stałych literału kwerendy parametry podczas kompilowania kwerendy.Dlatego optymalizator kwerendy może wybrać warunkami panującymi planów kwerend.W szczególności optymalizator kwerendy jest mniej prawdopodobne dopasować kwerendy indeksowany widok lub indeksu na kolumna obliczana.Ponadto można warunkami panującymi planów kwerend stwarzane na tabelach podzielonym na partycje i rozproszonych widoków partycji.Parametryzacja wymuszony nie powinny być używane w środowiskach, w dużym stopniu polegających na widoki indeksowane i indeksów dla kolumny obliczanej.Zazwyczaj opcja ZMUSZONY PARAMETRYZACJA powinny służyć wyłącznie przez administratorów doświadczonych bazy danych po ustalenia, czy w ten sposób nie wpływa na wydajność.
Kwerendami rozproszonymi odwołujące się do więcej niż jednej bazy danych kwalifikują się do wymuszonego parametryzacja jak opcja PARAMETRYZACJA jest zestaw do WYMUSZONY, w którego kontekście działa kwerendy w bazie danych.
Ustawienie opcji PARAMETRYZACJA WYMUSZONY opróżnia wszystkie plany kwerend z planu pamięci podręcznej bazy danych, z wyjątkiem tych, które obecnie są kompilowanie, ponownej kompilacji lub z systemem.Plany dla kwerend, które są kompilowania lub uruchomiony podczas zmiany ustawienia są parametryzowane następnego czas kwerenda jest wykonywana.
Ustawienie opcji PARAMETRYZACJA jest operacja online, nie wymaga żadnych blokad wyłączne poziom bazy danych.
Parametryzacja wymuszone jest wyłączone (zestaw prosty) podczas zgodność SQL Server bazy danych jest ustawiony na 80, lub bazy danych na wcześniejsze wystąpienie jest dołączony do wystąpienia SQL Server 2005 lub nowszej.
Bieżące ustawienie opcji PARAMETRYZACJA jest zachowywane podczas podłączenie lub przywracanie bazy danych.
Użytkownik może zmienić zachowanie parametryzacja wymuszone przez określenie, że proste parametryzacja wypróbowywane w jednej kwerendzie i innych syntaktycznie równoważne, które różnią się jedynie ich wartości parametru.Odwrotnie, można określić, że wymuszony parametryzacja wypróbowywane na tylko zestaw syntaktycznie równoważne kwerend, nawet jeśli zmuszony parametryzacja jest wyłączona w bazie danych.Plan guides są używane do tego celu.Aby uzyskać więcej informacji, zobacz Określanie zachowania parametryzacji kwerendy przy użyciu prowadnic Plan.
Ostrzeżenie
Gdy opcja PARAMETRYZACJA jest zestaw do WYMUSZONY, zgłoszenie komunikaty o błędach mogą się różnić, parametryzacja proste: wiele komunikatów o błędzie może podać w przypadkach, w których zgłoszone wiadomości mniej mocy parametryzacja proste i numery wierszy, w których występują błędy, należy podać niepoprawnie.