以下は、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のリンクサーバーからのすべてのデータベースの一覧表示を参照してください。