SQL Server 2008 R2にデータベースTest1
があります。ライブサーバーでバックアップを取り、ローカルマシンでTest2
として復元し、いくつかのテーブルと手順を追加しました。
Test2
をライブサーバーに復元すると、テスト1ではなくテスト2のみにあるテーブル名とプロシージャ名を取得できるクエリか、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
このブログ で見つけたこのスクリプトをよく使用します
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
これがあなたにいくつかの追加の助けを与えることを願っています
次のクエリを使用します。
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