连接到 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 拥有一个数据库(master
和 tempdb
除外)。您必须使用 CREATE DATABASE
创建该单一数据库(如果尚未创建;询问 sys.databases
)。
我不知道是否支持在 PostgreSQL(端口 5432)中创建一个 table 并在端口 1433 上使用它(反之亦然),但如果支持,则必须在连接到端口 1433 时使用 CREATE SCHEMA
创建的架构中创建它。
答案是我应该连接到数据库“master”。
即使实例中没有名为 master 的数据库,您仍然可以连接到它。
连接后,运行以下内容:
select current_database();
这将表明您已连接到数据库“babelfish_db”。
我不知道它是如何工作的,也不知道为什么数据库会有一个未记录的别名。
这里更大的答案是 cross-DB 对象引用目前在 Babelfish 中不受支持,在您当前的 SQL 服务器数据库之外。
目前正在研究中。敬请期待。
我正在尝试连接到启用了 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 拥有一个数据库(master
和 tempdb
除外)。您必须使用 CREATE DATABASE
创建该单一数据库(如果尚未创建;询问 sys.databases
)。
我不知道是否支持在 PostgreSQL(端口 5432)中创建一个 table 并在端口 1433 上使用它(反之亦然),但如果支持,则必须在连接到端口 1433 时使用 CREATE SCHEMA
创建的架构中创建它。
答案是我应该连接到数据库“master”。
即使实例中没有名为 master 的数据库,您仍然可以连接到它。
连接后,运行以下内容:
select current_database();
这将表明您已连接到数据库“babelfish_db”。
我不知道它是如何工作的,也不知道为什么数据库会有一个未记录的别名。
这里更大的答案是 cross-DB 对象引用目前在 Babelfish 中不受支持,在您当前的 SQL 服务器数据库之外。 目前正在研究中。敬请期待。