これは、SQLServerの現在のデータベースにあるシステムテーブルの数をすばやく判断するための3つの方法を紹介する記事です。
3つのオプションはすべて、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–「タイプの説明」による
もう1つのオプションは、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()による
何らかの理由で前の2つのオプションが不適切であると思われる場合は、OBJECTPROPERTY()
を使用してみてください。 働き。
この関数は、オブジェクトIDとプロパティの2つの引数を受け入れます。オブジェクトIDはテーブルIDにすることができ、プロパティはIsSystemTable
にすることができます。 、オブジェクトがシステムテーブルであるかどうかを決定します。
したがって、次のようなことができます:
USE Music; SELECT COUNT(*) AS [Number of System Tables] FROM sys.objects WHERE OBJECTPROPERTY(object_id, 'IsSystemTable') = 1;
結果:
+---------------------------+ | Number of System Tables | |---------------------------| | 72 | +---------------------------+
テーブルを一覧表示する
テーブルを単に数えるのではなくリストしたい場合は、3つのオプションを変更できます。これを行うには、COUNT(*) AS [Number of User Tables]
を置き換えるだけです。 *
を使用 。または、返す列に明示的に名前を付けることもできます。
ユーザー定義テーブルのカウント
ユーザーの数を確認する必要がある場合 テーブルについては、SQLServerでユーザー定義テーブルの数をカウントする5つの方法を参照してください。