2015-07-29 3 views
0

Я работаю в месте, где у нас есть несколько SQL-серверов. На каждом сервере у меня есть пользователь, который позволяет мне создавать и удалять мои собственные таблицы и получать доступ к другим таблицам. Обычно я работаю, создавая ссылки туда и обратно на серверы и обратно, но до сих пор мне не приходилось ссылаться на таблицы, которые я создал для себя.дают доступ к таблице через ссылку DB

Мой вопрос поэтому, давая информацию выше (я надеюсь, что этого достаточно), как я могу создать таблицу на сервере2 и получить доступ через одну из установленных связей БД от server1? Я смотрел на создание связей с БД, но я убедил себя, что это не путь, так как ссылки DB уже установлены между серверами. Я предполагаю, что это имеет какое-то отношение к предоставлению доступа.

На данный момент я не могу получить доступ к таблице с сервера1 с помощью запроса, такого как select * from [email protected], что я обычно получаю от удаленных таблиц. Когда я пытаюсь это сделать, я получаю обычное сообщение об ошибке, указывающее, что Table or view does not exist и preceding line from SERVER2.

Спасибо

редактировать:

Когда я подключиться к server1 и просматривать все удаленные таблицы @ server2, используя запрос select * from [email protected], таблицу, которую я создал на server2 видна. Тем не менее, я все еще не могу ответить select, используя указанный выше запрос.

+0

предоставляют доступ к серверу 1 на сервере server2 db link и table1. Какую команду вы попробовали? –

ответ

1

Похоже, что пользователь удаленной базы данных не имеет достаточных привилегий (то есть, если вы уверены, что таблица существует), и решение зависит от того, как была создана ссылка на БД.

Если ссылка БД была создана с использованием предложения CONNECT TO someuser IDENTIFIED BY ..., вы можете подключиться только к «someuser», у которого в вашем случае нет разрешения на доступ к таблице. В этом случае было бы целесообразно создать новую ссылку БД правильному пользователю.

В противном случае ссылка БД имеет значение CONNECT TO CURRENT_USER или не имеет значения CONNECT BY, что означает, что имя пользователя и учетные данные, которые вы используете на сервере1, также используются для сервера2. В этом случае вам просто нужно убедиться, что пользователь действительно имеет доступ к таблице.

Подробнее о удаленных пользователях в ссылках DB here (из документации Oracle) вы можете узнать больше.

0

Я нашел решение. Ответ был выбрать из таблицы с помощью следующего запроса

SELECT * FROM [email protected]

где user2 является пользователем я использовал для создания table1 в server2.

Смежные вопросы