获取 Babelfish 系统目录中的信息 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

获取 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 ...
  • 使用 psqlpgAdmin 查询 PostgreSQL 端口 此示例使用 psql 列出架构元命令 (\dn):

    babelfish_db=> \dn

    此查询返回的结果集与 sqlcmd 在 T-SQL 端口上返回的结果集相同。

    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

一个每数据库视图,它对于存储在数据库本身中的数据库的每个文件都包含一行。

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)中的此功能为适用于 Aurora PostgreSQL 的 Babelfish 数据库中的各种对象生成数据定义脚本。然后,可以使用此脚本中生成的 DDL 命令在另一个适用于 Aurora PostgreSQL 的 Babelfish 数据库或 SQL Server 数据库中创建相同的对象。

Babelfish 在指定的版本中支持以下对象的 DDL 导出。

对象列表 2.4.0 3.1.0
用户表
主键
外键
唯一约束
索引
检查约束
视图
存储过程
用户定义的函数
表值函数
触发
用户定义的数据类型
用户定义的表类型
用户
登录名
Sequences 属性
角色

导出的 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)将生成为 latin1_general_cs_as,这是最接近的 Windows 排序规则。