SQL Server 2008 R2中有數據庫Test1
。在現場服務器上,我從那裏進行備份,並在我們的本地機器上將其恢復爲Test2
,並添加了一些表格和過程。如何統計SQL Server 2008中存儲過程和表的總數
如果我們將Test2
恢復到活動服務器上,那麼它是否可以獲取表名和過程名的任何查詢,它只在測試2中,而不在測試1中,或者SQL Server將它視爲完全不同的數據庫?
,什麼是查詢,如果我只想知道的Test1
和Test2
數據庫
SQL Server 2008 R2中有數據庫Test1
。在現場服務器上,我從那裏進行備份,並在我們的本地機器上將其恢復爲Test2
,並添加了一些表格和過程。如何統計SQL Server 2008中存儲過程和表的總數
如果我們將Test2
恢復到活動服務器上,那麼它是否可以獲取表名和過程名的任何查詢,它只在測試2中,而不在測試1中,或者SQL Server將它視爲完全不同的數據庫?
,什麼是查詢,如果我只想知道的Test1
和Test2
數據庫
差數這會給你的表和存儲過程的計數。
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
here中找到有關儲存的所有信息。
您可以使用這些2個查詢:
select count(*) as TablesCount from sys.tables
select count(*) as ProceduresCount from sys.procedures
我經常使用這個劇本我就this blog
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
或者通過這個參考文獻Object Catalog Views的對象,因爲你已經得到了以前答案中的表和過程的答案,例如
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
希望這給你一些額外的幫助
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = 'dbName';
您的查詢僅計算特定模式的表的數量。 –
試試下面
SELECT COUNT(*) AS [Total Tables] FROM sys.tables
SELECT COUNT(*) AS [Total Procedures] FROM sys.procedures
它爲我工作... –
這是從3年前Szymon的答案確切的副本。 –
使用下面的查詢。
USE YOURDBNAME
SELECT COUNT(*) AS totalTable from information_schema.tables
WHERE table_type = 'base table'
select Count(*) AS TotalProc from sys.procedures
我現在使用下面的基於Milica的答案與一些額外的類型,默認值和按數量排序。
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
使用此腳本。它不使用switch case語句。
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
是否存在比'P'類型存儲過程'P'(Assembly [(CLR)stored-procedure](http://technet.microsoft.com/en-us/)庫/ ms190790(v = SQL.105)的.aspx))? –
@TimSchmelter我不知道這樣,我會更新我的查詢。 –
'X'也可以是一個存儲過程 - 請參閱[this](http://stackoverflow.com/questions/2907049/interpreting-type-codes-in-sys-objects-in-sql-server)相關的問題一個列表。 – Bridge