连接到 Aurora Postgres(Babelfish,1433)

Connecting to Aurora Postgres (Babelfish, 1433)

我正在尝试连接到启用了 Babelfish 的新 Aurora PostgreSQL 实例。

注意:我可以通过普通端口 5432(Postgres TDAS 端点)使用 pg 库连接到实例。

但是,对于此测试,我尝试使用标准 mssql 程序包通过 Babelfish TDS 端点 (1433) 进行连接。

如果我指定了一个数据库名称(它是正确的),我收到错误 'database "postgres" does not exist':

var config = {
    server: 'xxx.us-east-1.rds.amazonaws.com',
    database: 'postgres',
    user: 'xxx',
    password: 'xxx'
};

由于连接失败,连接关闭。

如果我在配置中省略数据库 属性,例如:

var config = {
    server: 'xxx.us-east-1.rds.amazonaws.com',
    user: 'xxx',
    password: 'xxx'
};

它将连接。此外,我可以使用该连接来查询 SELECT CURRENT_TIMESTAMP 之类的基本内容并且它有效!

但是,我无法访问任何 tables。

如果我运行:

SELECT COUNT(1) FROM PERSON

我收到一个错误 'relation "person" does not exist'。

如果我用点标记它:

SELECT COUNT(1) FROM postgres.dbo."PERSON"

我收到错误消息“不支持跨数据库查询”。

所以,我不能直接连接到特定的数据库,如果我不指定数据库连接,我就不能交叉查询到table。

有人做过吗?

或者,如果没有,有什么想法可以帮助我弄清楚接下来要尝试什么吗?我没主意了。

Babelfish 数据库(您连接到端口 1433)与 PostgreSQL 数据库(端口 5432)无关。本质上,所有 Babelfish 都存在于单个 PostgreSQL 数据库中(参数 babelfishpg_tsql.database_name)。

您似乎有一个 single-db 设置,因为 Cross DB query is not supported。使用这样的设置,您只能通过端口 1433 拥有一个数据库(mastertempdb 除外)。您必须使用 CREATE DATABASE 创建该单一数据库(如果尚未创建;询问 sys.databases)。

我不知道是否支持在 PostgreSQL(端口 5432)中创建一个 table 并在端口 1433 上使用它(反之亦然),但如果支持,则必须在连接到端口 1433 时使用 CREATE SCHEMA 创建的架构中创建它。

答案是我应该连接到数据库“master”。

即使实例中没有名为 master 的数据库,您仍然可以连接到它。

连接后,运行以下内容:

select current_database();

这将表明您已连接到数据库“babelfish_db”。

我不知道它是如何工作的,也不知道为什么数据库会有一个未记录的别名。

这里更大的答案是 cross-DB 对象引用目前在 Babelfish 中不受支持,在您当前的 SQL 服务器数据库之外。 目前正在研究中。敬请期待。