Udostępnij za pomocą


sp_special_columns (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Zwraca optymalny zbiór kolumn, które jednoznacznie identyfikują wiersz w tabeli. Zwraca także kolumny automatycznie aktualizowane, gdy jakakolwiek wartość w wierszu zostanie zaktualizowana przez transakcję.

Transact-SQL konwencje składni

Składnia

sp_special_columns
    [ @table_name = ] N'table_name'
    [ , [ @table_owner = ] N'table_owner' ]
    [ , [ @table_qualifier = ] N'table_qualifier' ]
    [ , [ @col_type = ] 'col_type' ]
    [ , [ @scope = ] 'scope' ]
    [ , [ @nullable = ] 'nullable' ]
    [ , [ @ODBCVer = ] ODBCVer ]
[ ; ]

Arguments

[ @table_name = ] N'table_name'

Nazwa tabeli używanej do zwracania informacji katalogowych. @table_name to sysname, bez domyślnego ustawienia. Nie jest obsługiwane dopasowanie wzorców z dziką kartą.

[ @table_owner = ] N'table_owner'

Właściciel tabeli służył do zwracania informacji z katalogu. @table_owner to nazwa systemu, z domyślnym .NULL Nie jest obsługiwane dopasowanie wzorców z dziką kartą. Jeśli @table_owner nie jest określona, stosuje się domyślne reguły widoczności tabel w systemie zarządzania bazą danych (DBMS).

W SQL Server, jeśli aktualny użytkownik posiada tabelę o podanej nazwie, kolumny tej tabeli są zwracane. Jeśli @table_owner nie jest określona, a aktualny użytkownik nie posiada tabeli o określonym @table_name, procedura ta szuka tabeli o określonych @table_name należących do właściciela bazy danych. Jeśli tabela istnieje, jej kolumny są zwracane.

[ @table_qualifier = ] N'table_qualifier'

Nazwa kwalifikatora tabeli. @table_qualifier to nazwa systemu, z domyślnym obciążeniem NULL. Różne produkty DBMS obsługują trzyczęściowe nazewnictwo tabel (<qualifier>.<owner>.<name>). W SQL Server ta kolumna oznacza nazwę bazy danych. W niektórych produktach reprezentuje nazwę serwera środowiska bazodanowego tabeli.

[ @col_type = ] 'col_type'

Typ kolumny. @col_type jest char(1), z domyślnym poziomem R.

  • Type R zwraca optymalną kolumnę lub zbiór kolumn, który poprzez pobranie wartości z tej kolumny lub kolumn pozwala na jednoznaczną identyfikację dowolnego wiersza w określonej tabeli. Kolumna może być albo pseudokolumną zaprojektowaną do tego celu, albo kolumną lub kolumnami dowolnego unikalnego indeksu dla tabeli.

  • Typ V zwraca kolumnę lub kolumny w określonej tabeli, jeśli takie są, które są automatycznie aktualizowane przez źródło danych, gdy dowolna wartość w wierszu zostanie zaktualizowana przez dowolną transakcję.

[ @scope = ] 'zakres'

Minimalny wymagany zakres ROWID. @scope to char(1), z domyślnym .T

  • Zakres określa, C że ROWID jest ważny tylko wtedy, gdy jest umieszczony w tym wierszu.
  • Zakres T określa, że ROWID jest ważny dla transakcji.

[ @nullable = ] 'nulowalny'

Określa, czy kolumny specjalne mogą przyjmować wartość NULL . @nullable jest char(1), z domyślnym .U

  • O określa specjalne kolumny, które nie dopuszczają wartości null.
  • U określa kolumny, które są częściowo nieważne.

[ @ODBCVer = ] ODBCVer

Używana jest wersja ODBC. @ODBCVer jest int, z domyślnym obciążeniem 2. Ta wartość wskazuje na wersję ODBC 2.0. Aby uzyskać więcej informacji na temat różnic między wersją ODBC 2.0 a ODBC wersją 3.0, zobacz specyfikację ODBC SQLSpecialColumns dla wersji 3.0 ODBC.

Zwracanie wartości kodu

Żaden.

Zestaw wyników

Nazwa kolumny Typ danych Description
SCOPE smallint Rzeczywisty zakres ID wiersza. Może to być 0, 1lub 2. SQL Server zawsze zwraca .0 To pole zawsze zwraca wartość.

0 = SQL_SCOPE_CURROW. ID wiersza jest gwarantowany jako ważny tylko wtedy, gdy jest ustawiony na tym wierszu. Późniejsze ponowne zaznaczenie z ID wiersza może nie zwrócić wiersza, jeśli wiersz został zaktualizowany lub usunięty przez inną transakcję.
1 = SQL_SCOPE_TRANSACTION. ID wiersza jest gwarantowany jako ważny przez cały czas trwania bieżącej transakcji.
2 = SQL_SCOPE_SESSION. ID wiersza jest gwarantowany jako ważny przez cały czas trwania sesji (ponad granicami transakcji).
COLUMN_NAME sysname Nazwa kolumny dla każdej kolumny @table_name zwracana. To pole zawsze zwraca wartość.
DATA_TYPE smallint Typ danych ODBC SQL.
TYPE_NAME sysname Nazwa typu danych zależna od źródła danych; na przykład char, varchar, pieniądze lub tekst.
PRECISION int Precyzja kolumny na źródle danych. To pole zawsze zwraca wartość.
LENGTH int Długość w bajtach wymagana dla typu danych w jego formie binarnej w źródle danych, na przykład 10 dla char(10),4 dla liczb całkowitych oraz 2dla smallint.
SCALE smallint Skala kolumny na źródle danych. NULL zwraca się dla typów danych, dla których skala nie jest stosowana.
PSEUDO_COLUMN smallint Wskazuje, czy kolumna jest pseudokolumną. SQL Server zawsze zwraca:1

0 = SQL_PC_UNKNOWN
1 = SQL_PC_NOT_PSEUDO
2 = SQL_PC_PSEUDO

Uwagi

sp_special_columns jest równoważna w SQLSpecialColumns ODBC. Wyniki zwracane są uporządkowane według .SCOPE

Permissions

Wymaga SELECT zgody na schemat.

Przykłady

Poniższy przykład zwraca informacje o kolumnie, która jednoznacznie identyfikuje wiersze w tabeli HumanResources.Department .

USE AdventureWorks2022;
GO

EXECUTE sp_special_columns
    @table_name = 'Department',
    @table_owner = 'HumanResources';