Udostępnij za pośrednictwem


Parametryzacja wymuszony

Można zastąpić domyślną parametryzacja proste zachowanieSQL Server określając, że zostać sparametryzowana wszystkich instrukcji SELECT, INSERT, UPDATE i DELETE w bazie danych, należy poddać pewne ograniczenia. Wymuszona parametryzacji jest włączony, ustawienie opcji PARAMETRYZACJI FORCED w ZMIENIANIE BAZY DANYCH instrukcja.Wymuszona Parametryzacja może zwiększyć wydajność niektórych baz danych przez zmniejszenie częstotliwości kompilacji kwerendy i ponowne kompilacje.Bazy danych, które mogą korzystać z wymuszone parametryzacji są zazwyczaj występuje wysokie woluminów równoczesnych kwerendy ze źródeł, takich jak aplikacje punktach sprzedaży.

Jeśli ustawiono opcję PARAMETRYZACJI FORCED wartość literału, która pojawia się w SELECT, instrukcja INSERT, UPDATE lub DELETE przedstawionych w żadnej formie jest konwertowany na parametr podczas kompilacji kwerendy.Wyjątkami są literały, które pojawiają się w następujące konstrukcje kwerendy:

  • INSERT instrukcji... wykonać.

  • 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 zostały już została sparametryzowana w aplikacji klient.

  • Instrukcje, które zawierają XQuery wywołania metoda, której metoda pojawia się w kontekście gdzie argumenty czy zazwyczaj się parametrów, takich jak klauzula WHERE.Jeśli metoda pojawi się w kontekście, gdzie jej argumentów nie może być sparametryzowana, parametrów jest pozostałej części instrukcja.

  • Instrukcje wewnątrz Transact-SQL kursor. (Instrukcje SELECT wewnątrz kursory interfejsu API są parametryzowane.)

  • Tworzy kwerendę przestarzałe.

  • Wszelkie instrukcja, która jest uruchamiana w kontekście ANSI_PADDING lub ANSI_NULLS ustawić na OFF.

  • Instrukcje, które zawierają więcej niż 2,097 literały, które można parametryzacji.

  • Instrukcje, 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 COMPUTE klauzula.

  • Instrukcje zawierające WHERE CURRENT OF klauzula.

Ponadto następujące klauzule kwerendy nie są parametryzowane.Należy zauważyć, że w tych przypadkach, nie tylko klauzule, są parametryzowane.Inne klauzule, w obrębie tej samej kwerendy jest uprawniony do wymuszonego parametry.

  • The <select_list> of any SELECT instrukcja. Dotyczy to list SELECT wewnątrz instrukcji INSERT i listy SELECT podkwerendy.

  • Podkwerendą instrukcja SELECT, które pojawiają się wewnątrz instrukcja jeżeli.

  • Klauzule TOP, TABLESAMPLE, HAVING, GROUP BY, ORDER BY, wyjście... INTO lub FOR XML kwerendy.

  • Argumenty, zarówno bezpośrednio, jak i subexpressions OPENROWSET, OPENQUERY, OPENDATASOURCE, OPENXML lub dowolny operator więcej.

  • The pattern and escape_character arguments of a LIKE klauzula.

  • The style argument of a CONVERT klauzula.

  • Stałe całkowitą wewnątrz tożsamości klauzula.

  • Stałych określonych przy użyciu składni rozszerzenie ODBC.

  • Stała foldable wyrażeń, które stanowią argumenty +,-, *, /, a operatorzy %.Biorąc pod uwagę uprawnienie do wymuszonego parametryzacji SQL Server Uwzględnia wyrażenie jest stała foldable, gdy spełniony jest jeden z następujących warunków:

    • Nie kolumn, zmiennych lub podkwerend pojawiają się w wyrażeniu.

    • Wyrażenie zawiera klauzulę przypadek.

    Aby uzyskać więcej informacji na temat wyrażeń foldable stała zobacz Troubleshooting Poor Query Performance: Constant Folding and Expression Evaluation During Cardinality Estimation.

  • Argumenty do kwerendy wskazówkę dotyczącą klauzul.Obejmuje to number_of_rows argument wskazówki kwerendy FAST number_of_processors argument wskazówki dotyczącej kwerendy MAXDOP oraz number argument wskazówki dotyczącej kwerendy MAXRECURSION.

Parametryzacja występuje poziom indywidualnego Transact-SQL instrukcje. Innymi słowy są parametryzowane pojedyncze instrukcje w serii.Po kompilacji, kwerendy parametryczne jest wykonywany w kontekście partia, w którym został pierwotnie złożony.Jeśli plan wykonania kwerendy są buforowane, można określić, czy kwerenda została sparametryzowana przy odwoływaniu się do SQL kolumnasys.syscacheobjects dynamicznego zarządzania widoku.Jeśli jest parametrów kwerendy, nazwy i typy danych parametrów pochodzą przed tekstem przesłanych partia w tej kolumnie, takich jak (tinyint @ 1).Aby uzyskać informacje na temat buforowania planu kwerend Zobacz Wykonanie planu buforowanie i ponowne użycie.

Uwaga

Nazwy parametrów są dowolne.Użytkownicy lub aplikacje nie powinien zależeć od określonej kolejności nazw.Następujące mogą również tak zmieniać między wersjami SQL Server i uaktualnienia pakietu usługa: Nazwy parametrów, wybór literały, które są parametryzowane i odstępy w tekście sparametryzowana.

Typy danych parametrów

Kiedy SQL Server literały, parameterizes parametrów są konwertowane na następujące typy danych:

  • Literały liczby całkowitej wielkości w przeciwnym razie będzie mieścić się w int Typ danych parameterize do int. Większe są częściami predykaty obejmujących dowolny operator porównania (zawiera literały ciągów w liczby całkowitej <, <=, =, !=, >, >=, , !<, !>, <>ALL, ANY, SOME między i) parameterize do numeric(38,0). Większe literały, które nie są częściami predykatów, które mogą obejmować operatory porównania parameterize do numeric którego dokładność jest po prostu wystarczająco duży, aby jego rozmiar i których skala jest równa 0.

  • Stałoprzecinkowych literały numeryczne, które są częściami predykatów, które mogą obejmować operatory porównania parameterize do numeric którego dokładność jest 38 i których skala jest po prostu wystarczająco duży, aby obsługiwać jego rozmiaru. Stałoprzecinkowych literałów numerycznych, które nie są częściami predykatów, które mogą obejmować operatory porównania parameterize do numeric którego precyzji i skali są po prostu wystarczająco duży, aby obsługiwać jego rozmiaru.

  • Ruchomy literałów numerycznych punkt parameterize do float(53).

  • Inne niż Unicode ciąg literały parameterize do varchar(8000) Jeśli literał mieści się w obrębie 8000 znaków i do varchar(max) Jeśli jest więcej niż 8000 znaków.

  • Literały ciągów znaków Unicode parameterize do nvarchar(4000) Jeśli literał mieści się w obrębie 4000 znaków Unicode, a do nvarchar(max) Jeśli literał jest większy niż 4 000 znaków.

  • Literały ciągów binarnych parameterize do varbinary(8000) Jeśli literał wpisów w aktualizowanej 8000 bajtów. Jeśli jest większy niż 8000 bajtów, jest konwertowany na varbinary(max).

  • Literały typu pieniędzy parameterize do money.

Zalecenia dotyczące używania wymuszony parametryzacji

Należy wziąć pod uwagę następujące kwestie, gdy użytkownik zestaw opcję PARAMETRYZACJI FORCED:

  • Wymuszone parametryzacji, zmienia literału stałych w kwerendzie parametry podczas tworzenia kwerendy.Dlatego optymalizator kwerendy może wybrać suboptimal planów kwerend.W szczególności optymalizator kwerendy jest mniej prawdopodobne dopasować kwerendy widok indeksowany lub indeks dla kolumna obliczana.Można go również suboptimal planów kwerend związane z tabelami podzielonym na partycje i rozpowszechniane widoki na podzielonym na partycje.Wymuszona parametryzacji nie powinny być używane w środowiskach intensywnie korzystające z widoków indeksowanych i indeksów dla kolumny obliczanej.Ogólnie rzecz biorąc opcja ZMUSZONY PARAMETRYZACJI tylko stosuje się przez administratorów doświadczonych bazy danych po określające, które w ten sposób nie wpływa niekorzystnie na wydajność.

  • Kwerendami rozproszonymi, które odwołują się do więcej niż jednej bazy danych kwalifikują się do parametryzacji wymuszony, dopóki jest opcja PARAMETRYZACJI zestaw do FORCED, w którego kontekście działa kwerendy w bazie danych.

  • Ustawienie dla opcji PARAMETRYZACJI FORCED opróżnia wszystkie plany kwerend z planu pamięci podręcznej bazy danych, z wyjątkiem tych, które aktualnie są kompilacji, ponownej kompilacji lub z systemem.Plany kwerend, które są kompilacji lub uruchamiania podczas zmiany ustawień są parametryzowane następnym razem zostanie wykonana kwerenda.

  • Ustawienie opcji PARAMETRYZACJI jest operacją online wymaga nie wyłącznej blokady poziom bazy danych.

  • Wymuszona parametryzacji jest wyłączona (zestaw do SIMPLE) podczas zgodność SQL Server Baza danych jest zestaw do 80, lub w bazie danych na wcześniejsze instancji jest dołączony do wystąpienie SQL Server 2005 lub nowszy.

  • Bieżące ustawienie opcji PARAMETRYZACJI jest zachowywane podczas podłączenie lub przywracanie bazy danych.

Można zmienić zachowanie parametryzacji wymuszone przez określenie tej prostej parametryzacji się próby na jedną kwerendę i innych składniowo równoważne, ale różnią się jedynie wartości parametru.I odwrotnie, można określić tej wymuszone parametryzacji można tylko próby na zestaw składniowo odpowiednik kwerendy, nawet jeśli zmuszony parametryzacji jest wyłączona w bazie danych.Plan Prowadnice służą do tego celu.Aby uzyskać więcej informacji zobaczSpecifying Query Parameterization Behavior by Using Plan Guides.

Uwaga

Gdy FORCED ustawiono opcję Parametry, przekazywanie komunikatów o błędach mogą różnić się od, proste parametryzacji: wiele komunikatów o błędach mogą być zgłaszane w przypadkach, gdy mniejszej liczby wiadomości będzie zgłaszane w obszarze Parametry proste i numery wierszy, w których występują błędy, mogą być raportowane niepoprawnie.

See Also

Concepts

Other Resources