Три от изгледите на системния каталог в SQL Server включват sys.columns
, sys.system_columns
и sys.all_columns
.
Всеки от тези три каталожни изгледа предоставя метаданни за колоните в базата данни, но има разлика между тях.
Ето какво прави всеки от тях:
sys.columns
- Връща колони от дефинирани от потребителя обекти. Това включва колони от системните базови таблици.
sys.system_columns
- Връща колони от системни обекти.
sys.all_columns
- Връща колони от всички дефинирани от потребителя и системни обекти.
С други думи, последният изглед комбинира резултатите от предишните два изгледа.
Следните типове обекти могат да имат колони:
- Сборни функции със стойност на таблица (FT)
- Вградени SQL функции със стойности на таблица (IF)
- Вътрешни таблици (IT)
- Системни таблици (S)
- SQL функции със стойност на таблица (TF)
- Потребителски таблици (U)
- Изгледи (V)
Пример
Ето пример, който демонстрира разликата в резултатите, върнати от тези изгледи.
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;
Резултат:
+-----------+ | columns | |-----------| | 1025 | +-----------+ (1 row affected) +------------------+ | system_columns | |------------------| | 8982 | +------------------+ (1 row affected) +---------------+ | all_columns | |---------------| | 10007 | +---------------+ (1 row affected)
Ако добавим резултатите от първите две заявки заедно, получаваме същия резултат като sys.all_columns
:
USE Music; SELECT (SELECT COUNT(*) FROM sys.columns) + (SELECT COUNT(*) FROM sys.system_columns) AS Result;
Резултат:
+----------+ | Result | |----------| | 10007 | +----------+