Подтвердить что ты не робот

Как подсчитать общее количество хранимых процедур и таблиц в SQL Server 2008

У меня есть база данных Test1 в SQL Server 2008 R2. На реальном сервере я взял резервную копию и восстановил ее на нашей локальной машине как Test2 и добавил некоторые таблицы и процедуры.

Если мы вернем Test2 обратно на живой сервер, так это любой запрос, который может получить имя таблицы и имя процедуры, которое находится только в тесте 2, не в тесте 1, или SQL Server рассматривал его как совершенно другую базу данных?

И что такое запрос, если я хочу знать только количество разностей баз данных Test1 и Test2

4b9b3361

Ответ 1

Это даст вам количество таблиц и хранимых процедур.

SELECT 
    CASE TYPE 
        WHEN 'U' 
            THEN 'User Defined Tables' 
        WHEN 'S'
            THEN 'System Tables'
        WHEN 'IT'
            THEN 'Internal Tables'
        WHEN 'P'
            THEN 'Stored Procedures'
        WHEN 'PC'
            THEN 'CLR Stored Procedures'
        WHEN 'X'
            THEN 'Extended Stored Procedures'
    END, 
    COUNT(*)     
FROM SYS.OBJECTS
WHERE TYPE IN ('U', 'P', 'PC', 'S', 'IT', 'X')
GROUP BY TYPE

Вы можете найти в sys.objects все типы объектов в базе данных. Вам нужно будет запустить этот запрос в каждой из ваших баз данных, чтобы увидеть количество объектов.

Вы можете найти всю информацию о том, что хранится в sys.objects здесь.

Ответ 2

Вы можете использовать эти 2 запроса:

select count(*) as TablesCount from sys.tables
select count(*) as ProceduresCount from sys.procedures

Ответ 3

Я часто использую этот script, я нашел на этом блоге

USE [MyDatabase]
GO
SELECT 'Count' = COUNT(*), 'Type' = CASE type 
                WHEN 'C' THEN 'CHECK constraints' 
                WHEN 'D' THEN 'Default or DEFAULT constraints' 
                WHEN 'F' THEN 'FOREIGN KEY constraints' 
                WHEN 'FN' THEN 'Scalar functions' 
                WHEN 'IF' THEN 'Inlined table-functions' 
                WHEN 'K' THEN 'PRIMARY KEY or UNIQUE constraints' 
                WHEN 'L' THEN 'Logs' 
                WHEN 'P' THEN 'Stored procedures' 
                WHEN 'R' THEN 'Rules' 
                WHEN 'RF' THEN 'Replication filter stored procedures' 
                WHEN 'S' THEN 'System tables' 
                WHEN 'TF' THEN 'Table functions' 
                WHEN 'TR' THEN 'Triggers' 
                WHEN 'U' THEN 'User tables' 
                WHEN 'V' THEN 'Views' 
                WHEN 'X' THEN 'Extended stored procedures' 
    END 

    FROM sys.objects 
    GROUP BY type 
    ORDER BY type 
GO

Вы можете изменить его по типу из информации о sys.objects

Или по объекту из этой ссылки Представления каталога объектов, так как вы уже получили ответ для таблиц и процедур в предыдущих ответах, например

SELECT count(*) AS MyTables FROM sys.tables
SELECT count(*) AS MyProcedures FROM  sys.procedures
SELECT count(*) AS MyTriggers FROM  sys.triggers
SELECT count(*) AS MyViews FROM  sys.views

Надеюсь, это даст вам дополнительную помощь.

Ответ 4

Попробуйте ниже

SELECT COUNT(*) AS [Total Tables] FROM sys.tables  
SELECT COUNT(*) AS [Total Procedures] FROM sys.procedures

Ответ 5

Используйте следующие запросы.

USE YOURDBNAME
SELECT COUNT(*) AS totalTable from information_schema.tables 
WHERE table_type = 'base table'  

select Count(*) AS TotalProc from sys.procedures

Ответ 6

Теперь я использую ниже, основываясь на ответе Милики с некоторыми дополнительными типами, значением по умолчанию и отсортированным по счету.

SELECT 'Count' = COUNT(*), 'Type' = CASE type 
    WHEN 'AF' THEN 'Aggregate function (CLR)' 
    WHEN 'C' THEN 'CHECK constraints' 
    WHEN 'D' THEN 'Default or DEFAULT constraints' 
    WHEN 'F' THEN 'FOREIGN KEY constraints' 
    WHEN 'FN' THEN 'Scalar functions' 
    WHEN 'FS' THEN 'Assembly (CLR) scalar-function' 
    WHEN 'FT' THEN 'Assembly (CLR) table-valued function' 
    WHEN 'IF' THEN 'Inlined table-functions' 
    WHEN 'IT' THEN 'Internal table' 
    WHEN 'K' THEN 'PRIMARY KEY or UNIQUE constraints' 
    WHEN 'L' THEN 'Logs' 
    WHEN 'P' THEN 'Stored procedures' 
    WHEN 'PC' THEN 'Assembly (CLR) stored-procedure' 
    WHEN 'PG' THEN 'Plan guide' 
    WHEN 'PK' THEN 'PRIMARY KEY constraint' 
    WHEN 'R' THEN 'Rules' 
    WHEN 'RF' THEN 'Replication filter stored procedures' 
    WHEN 'S' THEN 'System tables' 
    WHEN 'SN' THEN 'Synonym' 
    WHEN 'SO' THEN 'Sequence object' 
    WHEN 'SQ' THEN 'Service queue' 
    WHEN 'TF' THEN 'Table functions' 
    WHEN 'TR' THEN 'Triggers' 
    WHEN 'U' THEN 'User tables' 
    WHEN 'UQ' THEN 'UNIQUE constraint' 
    WHEN 'V' THEN 'Views' 
    WHEN 'X' THEN 'Extended stored procedures' 
    ELSE type
END 
FROM sys.objects 
GROUP BY type 
ORDER BY 'Count' desc

Ответ 7

Используйте этот script. Он не использует оператор case switch.

USE [MyDatabase]
GO
select distinct type_desc as 'Type Description', Count from
(SELECT 'Count' = COUNT(*), type FROM sys.objects GROUP BY type) as dbstatistics 
left join sys.objects on dbstatistics.type = sys.objects.type ORDER BY Count desc
GO

Ответ 8

SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbName';