Przewidywalne i rodzaju funkcje

Firma Deterministic zawsze zwracają ten sam wynik dowolnego czas wywołana z określonym zestaw wartości wejściowych i podane w tym samym stanie bazy danych.Rodzaju funkcje mogą zwracać różne wyniki czas są nazywane z określonym zestaw wartości wejściowych nawet wtedy, gdy stan bazy danych, które mają dostęp, pozostaje bez zmian.

Istnieje kilka właściwości, funkcji zdefiniowanej przez użytkownika, które określają zdolność Aparat baz danych programu SQL Server do indeksu wyniki funkcji za pośrednictwem indeksów dla kolumny obliczane, które wywołują funkcję lub widoki indeksowane, które odwołuje się funkcja.Determinism funkcja jest taka właściwość.Na przykład indeks klastrowany nie można utworzyć w widoku, jeśli widok odwołuje się do dowolnego rodzaju funkcje.Aby uzyskać więcej informacji na temat właściwości funkcji, w tym determinism, zobacz Zdefiniowany przez użytkownika funkcji projekt wytycznych.

W tym temacie identyfikuje determinism wbudowane funkcje systemowe i wpływu na właściwość deterministic funkcji zdefiniowanej przez użytkownika, gdy zawiera wywołanie rozszerzonych procedur przechowywanych.

Wbudowanych funkcji Determinism

Nie mogą wpływać determinism dowolnej funkcja wbudowanej.Firmy Deterministic Networks jest każdy wbudowanych funkcja lub rodzaju w oparciu o sposób implementacji funkcja przez SQL Server.

Wszystkie funkcje wbudowane wartość zagregowana i ciąg są przewidywalne.Aby uzyskać listę tych funkcji, zobacz Funkcje agregujące (Transact-SQL) i Funkcje operujące na ciągach (Transact-SQL).

Następujące, wbudowane funkcje z kategorii wbudowanych funkcji innych niż wartość zagregowana i ciąg funkcje są zawsze deterministyczny.

ABS

RÓŻNDAT

ZASILANIA

ACOS

DZIEŃ

RADIANY

ASIN

STOPNIE

ZAOKR

ATAN

EXP

ZNAK

ATN2

PODŁOGI

SIN

PUŁAP

FUNKCJA ISNULL

KWADRAT

POŁĄCZENIE

FUNKCJA ISNUMERIC

SQRT

COS

DZIENNIK

TAN

KOT

LOG10

ROK

DŁUGOŚĆ_DANYCH

MIESIĄC

DATEADD

NULLIF

 

Następujące funkcje nie zawsze są przewidywalne, ale mogą być używane w Widoki indeksowane lub indeksów dla kolumny obliczanej, gdy są one określane w sposób.

Funkcja

Komentarze

OBSADA

Przewidywalne, chyba że z datetime, smalldatetime, lub sql_variant.

KONWERTOWANIE

Deterministic, chyba że jeden z tych warunków istnieje:

  • Typ źródła jest sql_variant.

  • Typ docelowy jest sql_variant i jego typ źródło jest rodzaju.

  • Źródło lub typ miejsce docelowe jest datetime lub smalldatetime, inne źródło lub typ miejsce docelowe jest ciągiem znaków i określonego rodzaju stylu.Aby być deterministyczny, styl parametru musi być stała.Ponadto style są mniejsze lub równe 100 rodzaju, z wyjątkiem dla stylów, 20 i 21.Przewidywalne, z wyjątkiem dla stylów, 106, 107, 109 i 113 są style większe od 100.

SUMA KONTROLNA

Przewidywalne, z wyjątkiem CHECKSUM(*).

ISDATE

Przewidywalne tylko wtedy, gdy używana z funkcja konwersji określono parametr styl konwersji i styl nie jest równa 0, 100, 9 lub 109.

RAND

Deterministic tylko wtedy, gdy jest LOS seed jest określony parametr.

Wszystkich konfiguracja, kursor, metadane, zabezpieczeń i funkcji statystycznych w systemie są rodzaju.Aby uzyskać listę tych funkcji, zobacz Konfiguracja funkcji (Transact-SQL), Kursor funkcje (Transact-SQL), Funkcje metadanych (Transact-SQL), Funkcje zabezpieczeń (Transact-SQL), i System funkcje statystyczne języka Transact-SQL).

Następujące funkcje wbudowane od innych kategorii są zawsze rodzaju.

@@ POŁĄCZEŃ

@@ TOTAL_WRITE

@@ CPU_BUSY

CURRENT_TIMESTAMP

@@ DBTS

GETDATE

@@ BEZCZYNNOŚCI

GETUTCDATE

@@ IO_BUSY

GET_TRANSMISSION_STATUS

@@ MAX_CONNECTIONS

MIN_ACTIVE_ROWVERSION

@@ PACK_RECEIVED

NEWID

@@ PACK_SENT

NEWSEQUENTIALID

@@ PACKET_ERRORS

PARSENAME

@@ TIMETICKS

RAND

@@ TOTAL_ERRORS

TEXTPTR

@@ TOTAL_READ

Wywoływanie rozszerzone procedury z funkcji przechowywane

Funkcje, które wywołują rozszerzone procedury przechowywane są rodzaju, ponieważ rozszerzone procedury przechowywane mogą powodować skutki uboczne w bazie danych.Efekty są zmiany globalne stanu bazy danych, takie jak aktualizacja do tabela lub do zasób zewnętrznego, na przykład pliku lub sieci; na przykład, modyfikacja pliku lub wysłanie wiadomości e-mail.Nie można polegać na zwracanie spójny zestaw podczas wykonywania rozszerzone wyników procedura składowana z funkcja zdefiniowanej przez użytkownika.Funkcje zdefiniowane przez użytkownika, które utworzyć efekty uboczne w bazie danych nie jest zalecane.

Po wywołaniu z wewnątrz funkcja rozszerzona procedura składowana nie może zwrócić zestaw wyników do klient.Dowolnego otwartego API usług danych, który zwraca zestaw wyników do klient będzie miał zwrócony kod błędu.

rozszerzona procedura składowana można ponownie połączyć SQL Server.Jednakże procedura nie łączyć tej samej transakcji jako funkcja oryginalnego, która wywołała rozszerzone procedura składowana.

Podobne do wywołania z partia lub procedury przechowywanej, rozszerzona procedura składowana jest wykonywany w kontekście Microsoft konto zabezpieczeń systemu Windows, w którym SQL Server jest uruchomiony.Właściciel rozszerzona procedura składowana należy rozważyć, to podczas przyznawania uprawnień do innych użytkowników, aby wykonać procedurę.