Подключение к Авроре Постгрес (рыба-бабочка, 1433 г.)
Я пытаюсь подключиться к новому экземпляру Aurora PostgreSQL с включенным Babelfish.
ПРИМЕЧАНИЕ. Я могу подключиться к экземпляру с помощью библиотеки pg через обычный порт 5432 (конечная точка Postgres TDAS).
Однако для этого теста я пытаюсь подключиться через конечную точку Babelfish TDS (1433), используя стандартный пакет mssql.
Если я укажу имя базы данных (оно правильное), я получаю сообщение об ошибке «база данных postgres не существует»:
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, и оно работает!
Однако у меня нет доступа к таблицам.
Если я бегу:
SELECT COUNT(1) FROM PERSON
Я получаю сообщение об ошибке «Отношение« человек »не существует».
Если я обозначу это точками:
SELECT COUNT(1) FROM postgres.dbo."PERSON"
Я получаю сообщение об ошибке «Перекрестный запрос к БД не поддерживается».
Итак, я не могу подключиться к конкретной базе данных напрямую, и если я подключаюсь без указания базы данных, я не могу выполнить перекрестный запрос к таблице.
Кто-нибудь еще это сделал?
Или, если нет, какие-нибудь идеи, как помочь мне понять, что попробовать дальше? У меня нет идей.
3 ответа
Базы данных 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) и использование ее на порту 1433 (в противном случае все в порядке), но если это так, вы должны создать ее в схеме, которую вы создали с помощью
CREATE SCHEMA
при подключении к порту 1433.
Ответ заключался в том, что я должен подключаться к базе данных «мастер».
Несмотря на то, что в экземпляре нет базы данных с именем master, вы все равно подключаетесь к ней.
После подключения выполняется следующее:
select current_database();
Это будет означать, что вы подключены к базе данных «babelfish_db».
Я не знаю, как это работает и почему у базы данных может быть недокументированный псевдоним.
Более важный ответ здесь заключается в том, что ссылки на объекты между БД в настоящее время не поддерживаются в Babelfish за пределами вашей текущей базы данных SQL Server. В настоящее время над этим работают. Следите за обновлениями.