Tre af systemkatalogvisningerne i SQL Server inkluderer sys.columns
, sys.system_columns
, og sys.all_columns
.
Disse tre katalogvisninger giver hver især metadata om kolonner i databasen, men der er forskel på dem.
Her er, hvad hver enkelt gør:
sys.columns
- Returnerer kolonner fra brugerdefinerede objekter. Dette inkluderer kolonner fra systemets basistabeller.
sys.system_columns
- Returnerer kolonner fra systemobjekter.
sys.all_columns
- Returnerer kolonner fra alle brugerdefinerede og systemobjekter.
Med andre ord, den sidste visning kombinerer resultaterne af de to foregående visninger.
Følgende objekttyper kan have kolonner:
- Tabelvurderede samlingsfunktioner (FT)
- Inline tabelværdisatte SQL-funktioner (IF)
- Interne tabeller (IT)
- Systemtabeller (S)
- Tabelværdierede SQL-funktioner (TF)
- Brugertabeller (U)
- Visninger (V)
Eksempel
Her er et eksempel, der viser forskellen i resultater, der returneres af disse visninger.
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;
Resultat:
+-----------+ | columns | |-----------| | 1025 | +-----------+ (1 row affected) +------------------+ | system_columns | |------------------| | 8982 | +------------------+ (1 row affected) +---------------+ | all_columns | |---------------| | 10007 | +---------------+ (1 row affected)
Hvis vi lægger resultaterne af de to første forespørgsler sammen, får vi det samme resultat som sys.all_columns
:
USE Music; SELECT (SELECT COUNT(*) FROM sys.columns) + (SELECT COUNT(*) FROM sys.system_columns) AS Result;
Resultat:
+----------+ | Result | |----------| | 10007 | +----------+