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.schemas2>
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 制限事項 (ある場合) |
---|---|
|
すべてのテーブルとビューのすべての列 |
|
すべてのスキーマ内のすべてのオブジェクト |
|
|
|
すべてのスキーマのすべてのビュー |
|
ユーザー定義のテーブルおよびビューのすべての列 |
|
Babelfish のサポートは、単一の読み取り専用構成に制限されています。 |
|
各データスペースの行が含まれます。これには、ファイルグループ、パーティションスキーム、または FILESTREAM データファイルグループを指定できます。 |
|
データベース自体に格納されているデータベースのファイルごとに 1 つの行を含むデータベースごとのビュー。 |
|
詳細については、Microsoft Transact-SQLのドキュメントの「sys.database_mirroring |
|
詳細については、Microsoft Transact-SQLのドキュメントの「sys.database_principals |
|
詳細については、Microsoft Transact-SQLのドキュメントの「sys.database_role_members |
|
すべてのスキーマ内のすべてのデータベース |
|
詳細については、Microsoft Transact-SQLのドキュメントの「sys.dm_exec_connections |
|
詳細については、Microsoft Transact-SQLのドキュメントの「sys.dm_exec_sessions |
|
詳細については、Microsoft Transact-SQLのドキュメントの「sys.dm_hadr_database_replica_states |
|
詳細については、Microsoft Transact-SQLのドキュメントの「sys.dm_os_host_info |
|
詳細については、Microsoft Transact-SQLのドキュメントの「sys.endpoints |
|
詳細については、Microsoft Transact-SQLのドキュメントの「sys.indexes |
|
詳細については、Microsoft Transact-SQLのドキュメントの「sys.languages |
|
すべてのスキーマ |
|
すべてのログインとロール |
|
詳細については、Microsoft Transact-SQLのドキュメントの「sys.sql_modules |
|
Babelfish のサポートは、単一の読み取り専用構成に制限されています。 |
|
Babelfish のサポートは、単一の読み取り専用構成に制限されています。 |
|
詳細については、Microsoft Transact-SQLのドキュメントの「sys.sysprocesses |
|
詳細については、Microsoft Transact-SQLのドキュメントの「sys.system_sql_modules |
|
詳細については、Microsoft Transact-SQLのドキュメントの「sys.table_types |
|
スキーマ内のすべてのテーブル |
|
詳細については、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 として生成されます。