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

SQL Serverのsys.objects、sys.system_objects、およびsys.all_objectsの違い

    T-SQLをしばらく使用している場合は、sys.objectsに遭遇した可能性があります。 システムカタログビュー。データベース内のユーザー定義のスキーマスコープのオブジェクトを返します。

    しかし、あなたが気づいているかもしれないし、気づいていないかもしれない他の2つの同様の見解があります。 sys.system_objects およびsys.all_objects

    似ていますが、違いは明らかで、名前から違いがわかります。 3つのビューすべての公式定義は次のとおりです。

    sys.objects
    データベース内に作成された、ユーザー定義のスキーマスコープのオブジェクトごとの行が含まれます。
    sys.system_objects
    SQLServerに含まれるすべてのスキーマスコープのシステムオブジェクトに対して1つの行が含まれます。
    sys.all_objects
    UNIONを表示します スキーマスコープのすべてのユーザー定義オブジェクトとシステムオブジェクトの。

    つまり、最後のビューは前の2つのビューの結果を組み合わせたものです(システムの両方を返します。 ユーザー定義オブジェクト)。

    これらのビューによって返される結果の違いを示す例を次に示します。

    USE WideWorldImportersDW;
    
    SELECT COUNT(*) AS [sys.objects]
    FROM sys.objects;
    
    SELECT COUNT(*) AS [sys.system_objects]
    FROM sys.system_objects;
    
    SELECT COUNT(*) AS [sys.all_objects]
    FROM sys.all_objects;
    
    SELECT 
      (SELECT COUNT(*) AS [sys.all_objects] FROM sys.all_objects) - 
      (SELECT COUNT(*) AS [sys.system_objects] FROM sys.system_objects) 
    AS [sys.all_objects MINUS sys.system_objects];
    

    結果:

    +---------------+
    | sys.objects   |
    |---------------|
    | 224           |
    +---------------+
    (1 row affected)
    +----------------------+
    | sys.system_objects   |
    |----------------------|
    | 2205                 |
    +----------------------+
    (1 row affected)
    +-------------------+
    | sys.all_objects   |
    |-------------------|
    | 2429              |
    +-------------------+
    (1 row affected)
    

    これらのビューは、ここにリストするには行が多すぎるため、COUNT()を使用しています。 それぞれが返す行数を返します。

    数学が得意な場合は、sys.all_objectsの数がすぐにわかります。 sys.objectsの合計です およびsys.system_objects

    これがその追加を行うクエリです。

    SELECT 
      (SELECT COUNT(*) AS [sys.objects] FROM sys.objects) + 
      (SELECT COUNT(*) AS [sys.system_objects] FROM sys.system_objects) 
    AS [sys.objects PLUS sys.system_objects];
    

    結果:

    +---------------------------------------+
    | sys.objects PLUS sys.system_objects   |
    |---------------------------------------|
    | 2429                                  |
    +---------------------------------------+
    

    カタログビューでのメタデータの表示は、ユーザーが所有しているか、ユーザーに何らかの権限が付与されているセキュリティ保護可能なものに限定されていることに注意してください。


    1. MySQLデータベースへのデータのインポート

    2. MySQLにBLOBおよびCLOBファイルを挿入する方法は?

    3. PostgreSQLに存在しない場合はCREATEDATABASEをシミュレートしますか?

    4. Oracle10gで日付を時刻に変更する方法