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

SQL Server(T-SQL)でデータベースのリストを取得する3つの方法

    以下は、T-SQLを使用してSQLServerのデータベースのリストを返す3つの方法です。

    sp_databases ストアドプロシージャ

    SQL Serverでは、sp_databases ストアドプロシージャは、SQL Serverのインスタンスに存在するか、データベースゲートウェイを介してアクセスできるデータベースを一覧表示します。

    この手順を実行する例を次に示します。

    sp_databases;

    結果の例:

    +-----------------------+-----------------+-----------+
    | DATABASE_NAME         | DATABASE_SIZE   | REMARKS   |
    |-----------------------+-----------------+-----------|
    | KrankyKranes          | 16384           | NULL      |
    | master                | 6848            | NULL      |
    | model                 | 16384           | NULL      |
    | msdb                  | 79040           | NULL      |
    | Music                 | 16384           | NULL      |
    | NarrowNationExporters | 147456          | NULL      |
    | tempdb                | 24576           | NULL      |
    | WideWorldImporters    | 3575808         | NULL      |
    | World                 | 81920           | NULL      |
    +-----------------------+-----------------+-----------+

    ステートメントがバッチの最初のステートメントでない場合は、プロシージャ名の前にEXECを付ける必要があります。 またはEXECUTE

    したがって、次の3つのコマンドは同等です。

    sp_databases;
    EXEC sp_databases;
    EXECUTE sp_databases;

    ただし、最初のステートメントは、バッチの最初のステートメントである場合にのみ使用できます。

    sys.databases 表示

    sys.databases ビューには、SQLServerのインスタンスのデータベースごとに1つの行が含まれます。

    このビューをクエリする例を次に示します。

    SELECT name  
    FROM sys.databases;

    結果の例:

    +-----------------------+
    | name                  |
    |-----------------------|
    | master                |
    | tempdb                |
    | model                 |
    | msdb                  |
    | Music                 |
    | KrankyKranes          |
    | WideWorldImporters    |
    | World                 |
    | NarrowNationExporters |
    +-----------------------+

    このビューには多くの列が含まれており、他のビュー/テーブルと結合できるため、sp_databasesよりも多くの情報が必要な場合に理想的なオプションです。 プロシージャが戻ります。

    sys.sysdatabases テーブル/ビュー

    sys.sysdatabases sys.databasesと同等です 。

    したがって、sys.databasesを単純に交換できます。 上記の例では、sys.sysdatabases 同じ結果を得るには:

    SELECT name  
    FROM sys.sysdatabases;

    結果:

    +-----------------------+
    | name                  |
    |-----------------------|
    | master                |
    | tempdb                |
    | model                 |
    | msdb                  |
    | Music                 |
    | KrankyKranes          |
    | WideWorldImporters    |
    | World                 |
    | NarrowNationExporters |
    +-----------------------+

    ただし、このオプションは避ける必要があります。

    このSQLServer2000システムテーブルは、下位互換性の観点から、現在のSQLServerリリースに含まれています。これは、MicrosoftSQLServerの将来のバージョンで削除される予定です。 Microsoftは、新しい開発作業でこの機能を使用しないようにし、現在この機能を使用しているアプリケーションを変更することを計画することをお勧めします。

    したがって、sys.sysdatabasesを参照する古いスクリプトに遭遇した場合 、それをsys.databasesに変更することを検討する必要があります 。

    リンクサーバー

    リンクサーバーからデータベースのリストを取得する必要がある場合は、sp_catalogsを使用してください リンクサーバーの名前を渡している間。

    詳細と例については、SQLServerのリンクサーバーからのすべてのデータベースの一覧表示を参照してください。


    1. クライアントにSQLServerデータベースを使用してアプリケーションを展開する方法

    2. SQL Server Management Studio(SSMS)でオブジェクトをフィルタリングする方法-SQL Server/TSQLチュートリアルパート19

    3. MySQL:テーブルにレコードが存在しない場合はレコードを挿入します

    4. SET TEXTSIZEがSQLServerで機能しませんか?これをチェックして。