これは、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つの方法を参照してください。