sql >> データベース >  >> RDS >> Sqlserver

SQLServerデータベース内のシステムテーブルの数をカウントする3つの方法

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


    1. MySQLWorkbenchの代替-ClusterControlのポイントアンドクリックGUI

    2. Postgresql column=arrayである行を選択します

    3. MariaDB Enterpriseとは何ですか?ClusterControlで管理する方法は?

    4. SQLServerで同じクエリを複数回実行する最も簡単な方法