Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

3 начина за преброяване на броя на системните таблици в база данни на SQL Server

Ето една статия, която представя три начина за бързо определяне колко системни таблици има в текущата база данни в SQL Server.

И трите опции използват COUNT() функция, докато отправяте заявка към sys.objects изглед на системния каталог. Всички те водят до еднакъв резултат, така че наистина не е нужно да преминавате покрай първата опция. Но все пак ще ги изброя.

Опция 1 – По тип

Най-краткият начин да направите това е филтриране по type колона.

USE Music;
SELECT COUNT(*) AS [Number of System Tables]
FROM sys.objects 
WHERE type = 'S';

Резултат:

+---------------------------+
| Number of System Tables   |
|---------------------------|
| 72                        |
+---------------------------+

Тук филтрирам по type на S . S означава „основна таблица на системата“.

Ако мина на главената база данни, получавам различен резултат:

USE Master;
SELECT COUNT(*) AS [Number of System Tables]
FROM sys.objects 
WHERE type = 'S';

Резултат:

+---------------------------+
| Number of System Tables   |
|---------------------------|
| 79                        |
+---------------------------+

Това е така, защото гмайсторът базата данни съдържа някои системни таблици, които не са в други бази данни.

Можем да изпълним следната заявка, за да получим имената:

USE master;
SELECT name 
FROM sys.objects
WHERE type = 'S' 
AND name NOT IN (
  SELECT name FROM model.sys.objects WHERE type = 'S' 
);

Резултат:

+--------------------------+
| name                     |
|--------------------------|
| sysextendedrecoveryforks |
| syslogshippers           |
| sysmatrixageforget       |
| sysmatrixages            |
| sysmatrixbricks          |
| sysmatrixconfig          |
| sysmatrixmanagers        |
+--------------------------+

В случая сравнявам смайстора база данни към моделата база данни. Можете изрично да посочите различна база данни, като размените model с името на другата база данни.

Опция 2 – По „Описание на типа“

Друга възможност е да филтрирате по type_desc колона вместо type колона.

USE Music;
SELECT COUNT(*) AS [Number of System Tables]
FROM sys.objects 
WHERE type_desc = 'SYSTEM_TABLE';

Резултат:

+---------------------------+
| Number of System Tables   |
|---------------------------|
| 72                        |
+---------------------------+

Опция 3 – От OBJECTPROPERTY()

Ако по някаква причина намирате предишните две опции за неподходящи, можете да опитате да използвате OBJECTPROPERTY() функция.

Тази функция приема два аргумента:идентификатор на обект и свойство. Идентификаторът на обекта може да бъде идентификаторът на таблицата, а свойството може да бъде IsSystemTable , което определя дали обектът е системна таблица или не.

Следователно, можете да направите нещо подобно:

USE Music;
SELECT COUNT(*) AS [Number of System Tables]
FROM sys.objects 
WHERE OBJECTPROPERTY(object_id, 'IsSystemTable') = 1;

Резултат:

+---------------------------+
| Number of System Tables   |
|---------------------------|
| 72                        |
+---------------------------+

Избройте таблиците

Можете да промените трите опции, ако искате да изброите таблиците, вместо просто да ги броите. За да направите това, просто заменете COUNT(*) AS [Number of User Tables] с * . Като алтернатива можете да посочите изрично колоните, които искате да бъдат върнати.

Преброяване на потребителски дефинирани таблици

Ако трябва да разберете броя на потребител таблици, вижте 5 начина за преброяване на броя на дефинираните от потребителя таблици в SQL Server.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Нова версия:Spotlight Tuning Pack 7.1.9

  2. Консолидиране на екземпляр на SQL Server чрез клъстериране и подреждане

  3. Изтрийте пощенските съобщения от базата данни от базата данни msdb в SQL Server (T-SQL)

  4. Как мога да покажа структурата на таблицата в заявката на SQL Server?

  5. Динамичен SQL (предаване на името на таблицата като параметър)