Работаю над Sybase ASE 15.5.Как присоединиться к таблицам в другой базе данных на одном сервере Sybase
У меня есть 2 базы данных, созданные на том же сервере, «DatabaseA» и «DatabaseB». Владелец базы данных - «Пользователь».
Вход в систему как «Пользователь» Я создал таблицу в «DatabaseB», называемую «TableA».
Теперь у моего пользователя есть доступ к обеим базам данных, но база данных по умолчанию - «DatabaseA».
Это успешен, когда я войти в DatabaseA:
USE DatabaseB
GO
SELECT * from DatabaseB.User.TableA
GO
Но это не так:
USE DatabaseA
GO
SELECT * from DatabaseB.User.TableA
GO
Он говорит мне, что есть «Нет такого объекта или пользователь не существует в базе данных».
У меня есть Googled, и большинство сайтов говорят, что если у пользователя есть права, вам нужно только добавить базу данных и имя владельца в таблицу для доступа к ней. Но это не похоже на мое дело.
Я попытался создать нон пользователя DBO «user2», и присвоение его выбора права использования
GRANT SELECT ON DatabaseB.User.TableA to User2
и sp_helprotect показывает, что права есть для этого пользователя. Но результаты точно такие же, как когда я запрашиваю его с User.
Ниже результат от sp_helprotect
grantor | grantee | type | action | object | column | grantable
'User' | 'User2' | 'Grant' | 'Select' | 'TableA' | 'All' | 'FALSE'
Есть ли что-либо настройки или настройки, которые необходимо проверить, чтобы включить это?
EDIT (22 июля 2015)
Просто обнаружил кое-что. Есть несколько таблиц с DatabaseB, которые я могу получить из DatabaseA, но не всех таблиц.
Например, есть TableA, TableB, TableC и TableD в DatabaseB. Из которых TableB и TableD могут быть запрошены из DatabaseA с использованием
USE DatabaseA
GO
SELECT * from DatabaseB.User.TableB
GO
SELECT * from DatabaseB.User.TableD
GO
, который является успешным. И
USE DatabaseA
GO
SELECT * from DatabaseB.User.TableA
GO
SELECT * from DatabaseB.User.TableC
GO
не работает.
Помощь !!!
Средняя часть является * «схемы» *, а не * «пользователь» * - это Sybase создать схема-для каждого пользователя? Потому что если нет, то эта схема может не существовать. Обычно стандартная схема называется «dbo» или «public» или аналогичной. – user2864740
Если я вхожу в систему непосредственно в DatabaseB и запускаю тот же SQL, он работает. Он просто не работает, когда я вхожу в DatabaseA и пытаюсь запросить таблицу оттуда. Обе базы данных находятся на одном сервере, и у пользователя есть права доступа к ним. – iWantSimpleLife
«Схема» не является терминологией ASE (это терминология MS SQL Server). Эта средняя часть - это имя пользователя базы данных, иначе. владелец объекта. – RobV