Как работать с несколькими пользователями, имеющими доступ к собственной базе данных в Oracle с помощью .NET? - PullRequest
3 голосов
/ 01 февраля 2011

Мои и двое моих друзей закончили работу над приложениями на базе .NET и Oracle для университета, но есть небольшая проблема. Мы только заметили об этом сейчас, и это не очень важно, чтобы мы это исправили, но мы все равно хотели бы.

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

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

Разве нет способа просто иметь ОДНО соединение с ОДНОЙ парой имени пользователя и пароля в ОДНОМ месте и покончить с этим?

Не знаю, если это актуально, но мы используем Oracle Developer Tools для Visual Studio.

Ответы [ 3 ]

0 голосов
/ 02 февраля 2011

Исходя из вашего комментария, похоже, что вы ищете "Proxy Users".Итак, ваше веб-приложение подключается к базе данных как пользователь webapp с некоторым паролем.Само по себе это не имеет ничего общего.Веб-пользователь flynn приходит и хочет использовать ваше веб-приложение.Дело в том, что данные находятся в схеме flynn.Что произойдет, это то, что webapp говорит: «Эй, я собираюсь быть flynn на некоторое время», а база данных говорит: «Да, я знаю тебя, ты можешь быть flynn на некоторое время».И с тех пор webapp работает (по умолчанию) в схеме flynn.

Дополнительная информация об аутентификации через прокси доступна в документации ODP .

0 голосов
/ 28 мая 2011

Где хранить строки подключения? Либо в web.config или app.config Получить с помощью ConfigurationManager или WebConfigurationManager

Пример из web.config

<connectionStrings>
    <add name="DB:PM" connectionString="Persist Security Info=False;User Id=**UserName**;Password=**PASSWORD**;Data Source=**DataBaseName**" providerName="Oracle.DataAccess.Client"/>
</connectionStrings>

Пример поиска

m_strConnectionsString = WebConfigurationManager.ConnectionStrings["DB:PM"].ConnectionString;

1) Я предполагаю, но я думаю, что у каждого из вас есть своя собственная схема, а не база данных. Все схемы, вероятно, существуют в одной базе данных. Имена схем и имена пользователей обычно совпадают.

То, что вы видите перед именем таблицы, является именем схемы. Это часто называют полностью определенным именем. У Фреда может быть стол с именем подружек, у Тома - стол с именем подружек. Таблица Fred.girlfriends отличается от таблицы Tom.girlfriends.

2) создать одну или несколько ролей базы данных (роли - это объекты базы данных, а не объекты схемы) назначьте роли для нужных вам таблиц, используя полные имена.

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

Надеюсь, что я не полностью пропустил отметку здесь, и я надеюсь, что вы все равно можете использовать эту информацию
Harv Sather

0 голосов
/ 01 февраля 2011

Редактировать: Это не то, о чем говорил аскер. Извините!

Поздравляем! Вы столкнулись с проблемой кодирования в реальном мире в школе. Чувак, я бы хотел, чтобы это случалось со мной чаще, когда я учился в университете.

У вас есть пара вариантов:

  1. Выберите схему одного пользователя для работы. То есть каждый разработчик будет входить со своим именем пользователя / паролем. Однако, как только они войдут в систему, они установят схему своего сеанса по умолчанию, используя эту команду: ALTER SESSION SET CURRENT_SCHEMA = SCHEMA_NAME_HERE Таким образом, когда вы обращаетесь к таблице T, она не имеет имени схемы впереди для всех разработчиков. Хитрость заключается в том, чтобы не перекрывать изменения друг друга при одновременной работе над проектом. Координация будет необходима. В зависимости от количества людей это может быть осуществимо.

  2. Используйте инструмент управления внешним источником для синхронизации изменений. Это включает в себя такие вещи, как Subversion (SVN), Git, Mercurial и т. Д. Вам нужно будет использовать эту форму, как только вы попадете на рабочее место, так что может быть полезно узнать об этом сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...