

# 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`를 사용하여 T-SQL 포트를 쿼리하거나 다른 SQL Server 클라이언트를 쿼리합니다**.

  ```
  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
  ```

  쿼리는 `sqlcmd`에서 T-SQL 포트에 반환한 것과 동일한 결과 세트를 반환합니다.

  ```
          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` | 데이터베이스 자체에 저장된 데이터베이스의 각 파일에 대해 하나의 행이 포함된 데이터베이스별 뷰입니다. | 
| `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 | 아니요 | 아니요 | 
| 로그인 | 아니요 | 아니요 | 
| 시퀀스 | 아니요 | 아니요 | 
| Roles | 아니요 | 아니요 | 

### 내보낸 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로 생성됩니다.