Имя объекта <TableName> содержит больше максимального числа префиксов. Максимум 2

Я пытаюсь получить записи из двух таблиц на разных серверах с помощью одного запроса. Я использую приведенный ниже формат в запросе выбора.... но все, что я получаю, это ошибка выше.

Есть ли способ вытащить записи с двух серверов в одном запросе, как

select * from server1.db1.schema1.table1 s1,server2.db2.schema2.table2 s2 where s1.col1 = s2.col2

Я использую Sybase и Rapidsql.

РЕДАКТИРОВАТЬ: я использую Sybase Adaptive Server Enterprise 15.5 и быстрый SQL 8.1.0

1 ответ

Причина, по которой вы получаете синтаксическую ошибку, заключается в том, что Sybase ASE не может ссылаться на внешние базы данных и таблицы таким образом для запросов. Запросы поддерживают только синтаксис DATABASE.OWNER.TABLE или же DATABASE..TABLE,

С помощью Sybase ASE вы можете выполнять запросы к нескольким серверам с помощью служб интеграции компонентов (CIS). Это позволяет вам настроить прокси-таблицы или прокси-базы данных, которые извлекают данные, находящиеся на удаленном сервере. Удаленный сервер необходимо добавить на локальный сервер, используя sp_addserver и должен быть либо в interfaces / sql.ini, либо доступен через LDAP.

Оттуда вы должны добавить регистрационную информацию для удаленного сервера, используя sp_addexternalogin

Затем вам нужно будет подключиться к удаленному серверу и определить ваши прокси-таблицы или прокси-базы данных.

После этого вы можете рассматривать прокси-таблицы / базы данных как локальные для вашей системы для запросов, если локальные серверы подключены к удаленному серверу.

Я настоятельно рекомендую ознакомиться с документацией CIS, указанной выше, так как есть несколько руководств по ее настройке.

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