Как подсчитать общее количество хранимых процедур и таблиц в SQL Server 2008
У меня есть база данных Test1
в SQL Server 2008 R2. На реальном сервере я взял резервную копию и восстановил ее на нашей локальной машине как Test2
и добавил некоторые таблицы и процедуры.
Если мы вернем Test2
обратно на живой сервер, так это любой запрос, который может получить имя таблицы и имя процедуры, которое находится только в тесте 2, не в тесте 1, или SQL Server рассматривал его как совершенно другую базу данных?
И что такое запрос, если я хочу знать только количество разностей баз данных Test1
и Test2
Ответы
Ответ 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';