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