

# Babelfish システムカタログからの情報の入手
<a name="babelfish-query-database"></a>

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

これらのシステムビューは、システムカタログ (`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 システムカタログ
<a name="babelfish-query-database.system-catalogs"></a>

次の表は、Babelfish に現在実装されている SQL Server ビューです。SQL Server のシステムカタログの詳細については、Microsoft ドキュメントの「[システムカタログビュー (Transact-SQL)](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/catalog-views-transact-sql?view=sql-server-ver16)」を参照してください。<a name="system-catalog-table"></a>


| ビュー名 | 説明または Babelfish 制限事項 (ある場合) | 
| --- | --- | 
| `sys.all_columns` | すべてのテーブルとビューのすべての列 | 
| `sys.all_objects` | すべてのスキーマ内のすべてのオブジェクト | 
| `sys.all_sql_modules` | `sys.sql_modules` と `sys.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\$1mirroring](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-mirroring-transact-sql?view=sql-server-ver16)」を参照してください。 | 
| `sys.database_principals` | 詳細については、Microsoft Transact-SQLのドキュメントの「[sys.database\$1principals](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-principals-transact-sql?view=sql-server-ver16)」を参照してください。 | 
| `sys.database_role_members` | 詳細については、Microsoft Transact-SQLのドキュメントの「[sys.database\$1role\$1members](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-database-role-members-transact-sql?view=sql-server-ver16)」を参照してください。 | 
| `sys.databases` | すべてのスキーマ内のすべてのデータベース | 
| `sys.dm_exec_connections` | 詳細については、Microsoft Transact-SQLのドキュメントの「[sys.dm\$1exec\$1connections](https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-connections-transact-sql?view=sql-server-ver16)」を参照してください。 | 
| `sys.dm_exec_sessions` | 詳細については、Microsoft Transact-SQLのドキュメントの「[sys.dm\$1exec\$1sessions](https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-exec-sessions-transact-sql?view=sql-server-ver16)」を参照してください。 | 
| `sys.dm_hadr_database_replica_states` | 詳細については、Microsoft Transact-SQLのドキュメントの「[sys.dm\$1hadr\$1database\$1replica\$1states](https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-hadr-database-replica-states-transact-sql?view=sql-server-ver16)」を参照してください。 | 
| `sys.dm_os_host_info` | 詳細については、Microsoft Transact-SQLのドキュメントの「[sys.dm\$1os\$1host\$1info](https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-os-host-info-transact-sql?view=sql-server-ver16)」を参照してください。 | 
| `sys.endpoints` | 詳細については、Microsoft Transact-SQLのドキュメントの「[sys.endpoints](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-endpoints-transact-sql?view=sql-server-ver16)」を参照してください。 | 
| `sys.indexes` | 詳細については、Microsoft Transact-SQLのドキュメントの「[sys.indexes](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-indexes-transact-sql?view=sql-server-ver16)」を参照してください。 | 
| `sys.languages` | 詳細については、Microsoft Transact-SQLのドキュメントの「[sys.languages](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-fulltext-languages-transact-sql?view=sql-server-ver16)」を参照してください。 | 
| `sys.schemas` | すべてのスキーマ | 
| `sys.server_principals` | すべてのログインとロール | 
| `sys.sql_modules` | 詳細については、Microsoft Transact-SQLのドキュメントの「[sys.sql\$1modules](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-modules-transact-sql?view=sql-server-ver16)」を参照してください。 | 
| `sys.sysconfigures` | Babelfish のサポートは、単一の読み取り専用構成に制限されています。 | 
| `sys.syscurconfigs` | Babelfish のサポートは、単一の読み取り専用構成に制限されています。 | 
| `sys.sysprocesses` | 詳細については、Microsoft Transact-SQLのドキュメントの「[sys.sysprocesses](https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-sysprocesses-transact-sql?view=sql-server-ver16)」を参照してください。 | 
| `sys.system_sql_modules` | 詳細については、Microsoft Transact-SQLのドキュメントの「[sys.system\$1sql\$1modules](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-system-sql-modules-transact-sql?view=sql-server-ver16)」を参照してください。 | 
| `sys.table_types` | 詳細については、Microsoft Transact-SQLのドキュメントの「[sys.table\$1types](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-table-types-transact-sql?view=sql-server-ver16)」を参照してください。 | 
| `sys.tables` | スキーマ内のすべてのテーブル | 
| `sys.xml_schema_collections` | 詳細については、Microsoft Transact-SQLのドキュメントの「[sys.xml\$1schema\$1collections](https://docs.microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-xml-schema-collections-transact-sql?view=sql-server-ver16)」を参照してください。 | 

PostgreSQL は、SQL Server オブジェクトカタログビューに似たシステムカタログを実装しています。システムカタログの詳細なリストについては、PostgreSQL ドキュメントの「[システムカタログ](https://www.postgresql.org/docs/current/catalogs.html)」を参照してください。

## Babelfish がサポートする DDL エクスポート
<a name="babelfish-ddl-exports"></a>

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 | 
| --- | --- | --- | 
| ユーザーテーブル | 可能 | はい | 
| プライマリキー | 可能 | はい | 
| 外部キー | 可能 | はい | 
| 一意の制約 | 可能 | はい | 
| インデックス | 可能 | はい | 
| 検査制約 | 可能 | はい | 
| ビュー | 可能 | はい | 
| ストアドプロシージャ | 可能 | はい | 
| ユーザー定義関数 | 可能 | はい | 
| テーブル値関数 | 可能 | はい | 
| トリガー | 可能 | はい | 
| ユーザー定義のデータ型 | いいえ | いいえ | 
| ユーザー定義のテーブルタイプ | いいえ | いいえ | 
| Users | いいえ | いいえ | 
| ログイン | いいえ | いいえ | 
| シーケンス | いいえ | いいえ | 
| ロール | いいえ | いいえ | 

### エクスポートされた DDL による制限事項
<a name="babelfish-ddl-exports-limitations"></a>
+ **エクスポートされた DDL でオブジェクトの再作成前にエスケープハッチを使用する** – Babelfish では、エクスポートされた DDL スクリプトのすべてのコマンドをサポートしているわけではありません。Babelfish の DDL コマンドからオブジェクトを再作成するときに発生するエラーを回避するため、エスケープハッチを使用します。エスケープハッチの詳細については、「[エスケープハッチ処理時の Babelfish のエラー処理の管理](babelfish-strict.md)」を参照してください。
+ **明示的な COLLATE 句を含む CHECK 制約を含むオブジェクト** — SQL Server データベースから生成されたこれらのオブジェクトを含むスクリプトの照合順序は、Babelfish データベースとは異なりますが同等です。例えば、sql\$1latin1\$1general\$1cp1\$1cs\$1as、sql\$1latin1\$1general\$1cp1251\$1cs\$1as、latin1\$1general\$1cs\$1as などの一部の照合は、Windows の照合に最も近い latin1\$1general\$1cs\$1as として生成されます。