Babelfish システムカタログからの情報の入手 - Amazon Aurora

Babelfish システムカタログからの情報の入手

SQL Server で使用するのと同じシステムビューを多数クエリすることにより、Babelfish クラスターに格納されているデータベースオブジェクトに関する情報を取得できます。Babelfish の新しいリリースごとに、より多くのシステムビューがサポートされます。現在使用可能なビューのリストについては、SQL Server system catalog views テーブルを参照してください。

これらのシステムビューは、システムカタログ (sys.schemas) からの情報を提供します。Babelfish の場合、これらのビューには SQL Server と PostgreSQL の両方のシステムスキーマが含まれます。Babelfish でシステムカタログ情報を照会するには、次の例に示すように、TDS ポートまたは PostgreSQL ポートを使用できます。

  • sqlcmd または別の SQL Server クライアントを使用して、T-SQL ポートをクエリします

    1> SELECT * FROM sys.schemas 2> GO

    このクエリは、次に示すように SQL Server および Aurora PostgreSQL システムスキーマを返します。

    name --------------------------------------------------------- demographic_dbo public sys master_dbo tempdb_dbo ...
  • psqlまたはpgAdmin を使用して PostgreSQL ポートをクエリします。この例では psql リストスキーマメタコマンド (\dn):を使用します

    babelfish_db=> \dn

    クエリは、T-SQL ポート上で sqlcmd によって返された結果と同じ結果セットを返します。

    List of schemas Name ------------------------------ demographic_dbo public sys master_dbo tempdb_dbo ...

Babelfish で利用可能な SQL Server システムカタログ

次の表は、Babelfish に現在実装されている SQL Server ビューです。SQL Server のシステムカタログの詳細については、Microsoft ドキュメントの「システムカタログビュー (Transact-SQL)」を参照してください。

ビュー名 説明または Babelfish 制限事項 (ある場合)

sys.all_columns

すべてのテーブルとビューのすべての列

sys.all_objects

すべてのスキーマ内のすべてのオブジェクト

sys.all_sql_modules

sys.sql_modulessys.system_sql_modules の統合

sys.all_views

すべてのスキーマのすべてのビュー

sys.columns

ユーザー定義のテーブルおよびビューのすべての列

sys.configurations

Babelfish のサポートは、単一の読み取り専用構成に制限されています。

sys.data_spaces

各データスペースの行が含まれます。これには、ファイルグループ、パーティションスキーム、または FILESTREAM データファイルグループを指定できます。

sys.database_files

データベース自体に格納されているデータベースのファイルごとに 1 つの行を含むデータベースごとのビュー。

sys.database_mirroring

詳細については、Microsoft Transact-SQLのドキュメントの「sys.database_mirroring」を参照してください。

sys.database_principals

詳細については、Microsoft Transact-SQLのドキュメントの「sys.database_principals」を参照してください。

sys.database_role_members

詳細については、Microsoft Transact-SQLのドキュメントの「sys.database_role_members」を参照してください。

sys.databases

すべてのスキーマ内のすべてのデータベース

sys.dm_exec_connections

詳細については、Microsoft Transact-SQLのドキュメントの「sys.dm_exec_connections」を参照してください。

sys.dm_exec_sessions

詳細については、Microsoft Transact-SQLのドキュメントの「sys.dm_exec_sessions」を参照してください。

sys.dm_hadr_database_replica_states

詳細については、Microsoft Transact-SQLのドキュメントの「sys.dm_hadr_database_replica_states」を参照してください。

sys.dm_os_host_info

詳細については、Microsoft Transact-SQLのドキュメントの「sys.dm_os_host_info」を参照してください。

sys.endpoints

詳細については、Microsoft Transact-SQLのドキュメントの「sys.endpoints」を参照してください。

sys.indexes

詳細については、Microsoft Transact-SQLのドキュメントの「sys.indexes」を参照してください。

sys.languages

詳細については、Microsoft Transact-SQLのドキュメントの「sys.languages」を参照してください。

sys.schemas

すべてのスキーマ

sys.server_principals

すべてのログインとロール

sys.sql_modules

詳細については、Microsoft Transact-SQLのドキュメントの「sys.sql_modules」を参照してください。

sys.sysconfigures

Babelfish のサポートは、単一の読み取り専用構成に制限されています。

sys.syscurconfigs

Babelfish のサポートは、単一の読み取り専用構成に制限されています。

sys.sysprocesses

詳細については、Microsoft Transact-SQLのドキュメントの「sys.sysprocesses」を参照してください。

sys.system_sql_modules

詳細については、Microsoft Transact-SQLのドキュメントの「sys.system_sql_modules」を参照してください。

sys.table_types

詳細については、Microsoft Transact-SQLのドキュメントの「sys.table_types」を参照してください。

sys.tables

スキーマ内のすべてのテーブル

sys.xml_schema_collections

詳細については、Microsoft Transact-SQLのドキュメントの「sys.xml_schema_collections」を参照してください。

PostgreSQL は、SQL Server オブジェクトカタログビューに似たシステムカタログを実装しています。システムカタログの詳細なリストについては、PostgreSQL ドキュメントの「システムカタログ」を参照してください。

Babelfish がサポートする DDL エクスポート

Babelfish 2.4.0 および 3.1.0 バージョン以降、Babelfish はさまざまなツールを使用する DDL エクスポートをサポートしています。例えば、SQL Server Management Studio (SSMS) からこの機能を使用して、Babelfish for Aurora PostgreSQL データベース内のさまざまなオブジェクトのデータ定義スクリプトを生成できます。その後、このスクリプトで生成された DDL コマンドを使用して、同じオブジェクトを別の Babelfish for Aurora PostgreSQL または SQL Server データベースに作成できます。

Babelfish は、指定されたバージョンで、以下のオブジェクトの DDL エクスポートをサポートしています。

オブジェクトのリスト 2.4.0 3.1.0
ユーザーテーブル あり可能
プライマリキー あり可能
外部キー あり可能
一意の制約 あり可能
インデックス あり可能
検査制約 あり可能
ビュー あり可能
ストアドプロシージャ あり可能
ユーザー定義関数 あり可能
テーブル値関数 あり可能
トリガー あり可能
ユーザー定義のデータ型 不可なし
ユーザー定義のテーブルタイプ 不可なし
[ユーザー] 不可なし
ログイン 不可なし
シーケンス 不可なし
ロール 不可なし

エクスポートされた DDL による制限事項

  • エクスポートされた DDL でオブジェクトの再作成前にエスケープハッチを使用する – Babelfish では、エクスポートされた DDL スクリプトのすべてのコマンドをサポートしているわけではありません。Babelfish の DDL コマンドからオブジェクトを再作成するときに発生するエラーを回避するため、エスケープハッチを使用します。エスケープハッチの詳細については、「エスケープハッチ処理時の Babelfish のエラー処理の管理」を参照してください。

  • 明示的な COLLATE 句を含む CHECK 制約を含むオブジェクト — SQL Server データベースから生成されたこれらのオブジェクトを含むスクリプトの照合順序は、Babelfish データベースとは異なりますが同等です。例えば、sql_latin1_general_cp1_cs_as、sql_latin1_general_cp1251_cs_as、latin1_general_cs_as などの一部の照合は、Windows の照合に最も近い latin1_general_cs_as として生成されます。