Trois des vues de catalogue système dans SQL Server incluent sys.columns
, sys.system_columns
, et sys.all_columns
.
Ces trois vues de catalogue fournissent chacune des métadonnées sur les colonnes de la base de données, mais il existe une différence entre elles.
Voici ce que chacun fait :
sys.columns
- Renvoie des colonnes à partir d'objets définis par l'utilisateur. Cela inclut les colonnes des tables de base du système.
sys.system_columns
- Renvoie les colonnes des objets système.
sys.all_columns
- Renvoie les colonnes de tous les objets système et définis par l'utilisateur.
En d'autres termes, la dernière vue combine les résultats des deux vues précédentes.
Les types d'objets suivants peuvent avoir des colonnes :
- Fonctions d'assemblage de table (FT)
- Fonctions SQL de table en ligne (IF)
- Tableaux internes (IT)
- Tables système (S)
- Fonctions SQL table (TF)
- Tableaux utilisateur (U)
- Vues (V)
Exemple
Voici un exemple qui illustre la différence dans les résultats renvoyés par ces vues.
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;
Résultat :
+-----------+ | columns | |-----------| | 1025 | +-----------+ (1 row affected) +------------------+ | system_columns | |------------------| | 8982 | +------------------+ (1 row affected) +---------------+ | all_columns | |---------------| | 10007 | +---------------+ (1 row affected)
Si nous additionnons les résultats des deux premières requêtes ensemble, nous obtenons le même résultat que sys.all_columns
:
USE Music; SELECT (SELECT COUNT(*) FROM sys.columns) + (SELECT COUNT(*) FROM sys.system_columns) AS Result;
Résultat :
+----------+ | Result | |----------| | 10007 | +----------+