获取 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此查询返回的结果集与
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 限制(如果有) |
---|---|
|
所有表和视图中的所有列 |
|
所有架构中的所有对象 |
|
|
|
所有架构中的所有视图 |
|
用户定义的表和视图中的所有列 |
|
Babelfish 支持仅限于单个只读配置。 |
|
为每个数据空间包含一行。这可以是文件组、分区方案或 FILESTREAM 数据文件组。 |
|
一个每数据库视图,它对于存储在数据库本身中的数据库的每个文件都包含一行。 |
|
有关信息,请参阅 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)中的此功能为适用于 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 排序规则。