Udostępnij za pośrednictwem


Korzystanie z funkcje systemowe

funkcje systemowe umożliwiają uzyskanie dostępu do informacji z SQL Server tabele systemowe, bez uzyskiwania dostępu do tabel systemowych bezpośrednio.

Nazwy niektórych Transact-SQL funkcje systemowe rozpoczyna się od dwóch na znaki (@@). Chociaż w starszych wersjach SQL Server funkcje @@ są określane jako zmienne globalne, nie są zmienne oraz nie mają takie samo zachowanie jako zmienne. @@ Funkcje są to funkcje systemowe, a ich użycie składni następują reguły dla funkcji.

Każdy z następujące pary funkcje systemowe dla baz danych, hosty, obiekty, logowania i użytkownicy zwraca nazwę, gdy podany identyfikator (ID) i zwraca identyfikator podczas nadawana nazwa:

  • DB_ID i DB_NAME

  • HOST_ID i HOST_NAME

  • OBJECT_ID i OBJECT_NAME

  • SUSER_ID i SUSER_NAME (lub SUSER_SID i SUSER_SNAME)

  • USER_ID i USER_NAME

Na przykład, aby uzyskać numer identyfikatora bazy danych, funkcja DB_ID zamiast wykonywania SELECT z sysobjects tabela.

W poniższym przykładzie pokazano, jak pobrać nazwy użytkownika dla bieżącego użytkownika, który jest zalogowany przy użyciu SQL Server Uwierzytelnianie:

SELECT SUSER_NAME();

Następujące funkcje są podobne, ale nie występują one w parach uzupełniające i one mieć więcej niż jeden parametr wejściowy:

  • COL_LENGTH

    Zwraca długość kolumna, ale nie długość wszystkie poszczególne ciągi przechowywane kolumna.Aby określić całkowitą liczbę znaków w określonej wartości, należy użyć funkcja DŁUGOŚĆ_DANYCH.

    W poniższym przykładzie są zwracane długości kolumna i długości danych LastName kolumna w Employees Tabela:

    SELECT COL_LENGTH('Employees', 'LastName') AS Col_Length, 
       DATALENGTH(LastName) AS DataLength
    FROM Employees
    WHERE EmployeeID > 6;
    
  • COL_NAME

    Zwraca nazwę kolumna.

  • INDEX_COL

    Zwraca wartość z nazwą kolumna indeksu.

Zaleca się, że korzystania z funkcje systemowe, informacje o schemacie widoki, lub w systemie przechowywanych procedur w celu uzyskania informacji o systemie bez bezpośrednio podczas badania tabele systemowe.Tabele systemowe mogą zmieniać się znacznie między wersjami SQL Server.