Tři zobrazení systémového katalogu na serveru SQL Server zahrnují sys.columns
, sys.system_columns
a sys.all_columns
.
Každý z těchto tří zobrazení katalogu poskytuje metadata o sloupcích v databázi, ale je mezi nimi rozdíl.
Zde je to, co každý z nich dělá:
sys.columns
- Vrátí sloupce z objektů definovaných uživatelem. To zahrnuje sloupce ze základních tabulek systému.
sys.system_columns
- Vrátí sloupce ze systémových objektů.
sys.all_columns
- Vrátí sloupce ze všech uživatelsky definovaných a systémových objektů.
Jinými slovy, poslední pohled kombinuje výsledky předchozích dvou pohledů.
Následující typy objektů mohou mít sloupce:
- Funkce sestavení s tabulkovou hodnotou (FT)
- Inline funkce SQL s hodnotou tabulky (IF)
- Interní tabulky (IT)
- Systémové tabulky (S)
- Tabulkové funkce SQL (TF)
- Uživatelské tabulky (U)
- Zobrazení (V)
Příklad
Zde je příklad, který ukazuje rozdíl ve výsledcích vrácených těmito zobrazeními.
USE Music; SELECT COUNT(*) AS columns FROM sys.columns; SELECT COUNT(*) AS system_columns FROM sys.system_columns; SELECT COUNT(*) AS all_columns FROM sys.all_columns;
Výsledek:
+-----------+ | columns | |-----------| | 1025 | +-----------+ (1 row affected) +------------------+ | system_columns | |------------------| | 8982 | +------------------+ (1 row affected) +---------------+ | all_columns | |---------------| | 10007 | +---------------+ (1 row affected)
Pokud sečteme výsledky prvních dvou dotazů dohromady, dostaneme stejný výsledek jako sys.all_columns
:
USE Music; SELECT (SELECT COUNT(*) FROM sys.columns) + (SELECT COUNT(*) FROM sys.system_columns) AS Result;
Výsledek:
+----------+ | Result | |----------| | 10007 | +----------+