Zdefiniowany przez użytkownika funkcji projekt wytycznych

Funkcja zdefiniowana przez użytkownika jest przechowywana jako obiektu bazy danych, zapewniając wielokrotnego użytku kod używany w następujący sposób:

  • W Transact-SQL takich jak wybierz instrukcje

  • W aplikacjach wywołujących funkcja

  • W definicji innej funkcja zdefiniowanej przez użytkownika

  • Parameterize widok lub poprawy funkcjonalności indeksowany widok

  • Aby zdefiniować kolumna w tabela

  • Aby zdefiniować ograniczenie typu CHECK dla kolumna

  • Aby zastąpić procedura składowana

Wybieranie typu funkcji

Projektując funkcja zdefiniowanej przez użytkownika, należy najpierw określić typ funkcja dostosowane do potrzeb użytkownika.Będzie funkcja:

  • Zwraca wartość skalarna (pojedyncza wartość)

  • Zwrotu tabela (wielu wierszy)

  • Wykonywanie złożonych obliczeń

  • Dostęp przede wszystkim SQL Server danych

Funkcje zdefiniowane przez użytkownika albo napisana Transact-SQL lub .NET Framework powrócić zarówno wartość skalarna i tabela wartości.

Właściwości funkcji

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.Właściwości te mają również zastosowanie do metody CLR User-Defined typów.

Determinism

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.

Aparat baz danych Automatycznie analizuje treść Transact-SQL Funkcje i ocenia, czy funkcja deterministyczny.Na przykład, jeśli funkcja wywołuje inne funkcje, które są inne niż firmy Deterministic Networks lub rozszerzonych procedur przechowywanych wywołuje funkcję, a następnie Aparat baz danych oznacza funkcję jako deterministyczny.Dla typowe funkcje language runtime (CLR) Aparat baz danych zależy od autora funkcja oznaczyć deterministic lub nie użycie funkcja SqlFunction atrybut niestandardowego.

Precision

Funkcja zdefiniowana przez użytkownika jest nazywany dokładne, jeśli nie obejmują wszelkie przestawne operacje w punkcie.

Aparat baz danych Automatycznie analizuje treść Transact-SQL Funkcje i ocenia, czy funkcja jest dokładny.Dla funkcja CLR Aparat baz danych zależy od autora funkcja oznaczyć dokładne lub nie użycie funkcja SqlFunction atrybut niestandardowego.

Dostęp do danych

Właściwość ta wskazuje, czy uzyskuje dostęp do funkcja i przy użyciu serwera lokalnej bazy danych SQL Server w proces zarządzany dostawca.Aby uzyskać więcej informacji, zobacz Dostęp do danych z CLR obiektów bazy danych.

Aparat baz danych Automatycznie analizuje treść Transact-SQL Funkcje i ocenia, czy funkcja wykonuje dostępu do danych.Dla funkcja CLR Aparat baz danych zależy od autora wskazuje właściwości dostępu danych przy użyciu funkcja SqlFunction atrybut niestandardowego.Ta właściwość jest wymuszana na wykonanie czas przez Aparat baz danych.Jeśli funkcja wskazuje, że DataAccess = Brak, ale wykonuje dostępu do danych, Niepowodzenie funkcji w wykonanie czas.

Dostęp do danych systemu

Właściwość ta wskazuje, czy funkcja uzyskuje dostęp do metadane systemu przy użyciu serwera lokalnej bazy danych SQL Server w proces zarządzany dostawca.

Aparat baz danych Automatycznie analizuje treść Transact-SQL Funkcje i ocenia, czy funkcja wykonuje system dostępu do danych.Dla funkcja CLR Aparat baz danych zależy od autora funkcja oznacza system właściwości dostępu danych przy użyciu SqlFunction atrybut niestandardowego.Ta właściwość jest wymuszana na wykonanie czas przez Aparat baz danych.Jeśli funkcja wskazuje, że SystemDataAccess = Brak, ale dostęp do danych systemu, Niepowodzenie funkcji w wykonanie wykonuje czas.

IsSystemVerified

Właściwość ta wskazuje, czy właściwości determinism i precyzja funkcja są możliwe do zweryfikowania przez Aparat baz danych.Ta właściwość ma wartość true dla Transact-SQL funkcjonuje tak długo, jak nie wymagają żadnych funkcji oznaczone jako IsSystemVerified = false.Właściwość ma wartość false dla funkcji środowiska CLR.

Aparat baz danych Wynika automatycznie IsSystemVerified właściwość funkcji.Dla Transact-SQL funkcji, jeżeli mają dostęp jakiejkolwiek funkcji, która jest oznaczona jako IsSystemVerified = false, a następnie oznaczony sama funkcja IsSystemVerified = false.

Aby uzyskać więcej informacji o funkcjach w indeksowanych kolumny obliczane i widoki indeksowane, zobacz Tworzenie indeksów kolumny obliczanej, i Tworzenie widoków indeksowanych.