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:
|
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ę.