Подключение к Авроре Постгрес (рыба-бабочка, 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. В настоящее время над этим работают. Следите за обновлениями.

Другие вопросы по тегам