|
|
|
Forum Guru
      
участник
Last Login: 14.06.2006 13:40
Сообщ.: 71,
Visits: 783
|
|
Есть БД на SQL Server с клиентской частью на Access. Вот и существует проблема с авторизацией. На данный момент использую вариант с защитой рабочих групп в Access на основе файла *.mdw, а клиентское приложение входит на сервак с учетной записью sa. Но согласитесь, что это все-таки очень коряво, приходится использовать для работы общий ресурс с файлом *.mdw... А я видел (но посмотреть не смог как организовано, т.к. был mde-шник), как организован логон в клиентском приложении Access на основе учетных записей в SQL Server. Варианты с оставлением в пустого пароля в строке подключения для запросов/таблиц сразу не подходят, т.к. в результате выводится сообщение об ошибке с просьбой ввести правильный пароль, а это по-умолчанию некорректно. Варианты с логоном WinNT тоже не подходят. Причем очень даже понятно как использовать необходимые учетные записи/пароли в коде VB, а вот для содержащихся в базе прилинкованных таблиц и запросов к серверу непонятно как организовать. Подскажите, кто знает!!! :)
|
|
|
|
|
Forum Guru
      
участник
Last Login: 29.06.2004 10:34
Сообщ.: 60,
Visits: 661
|
|
Доступ к SQL Server из Access абсолютно прозрачен. С помощью Enterprise Manager создаем пользователя для нашей БиДе. Имя пользователя должно совпадать с именем пользователя MDB (или, если угодно MDW, какая разница…). Пароль тоже! И в имени, и в пароле большие/малые буквы могут иметь значение. Все зависит, полагаю, от версии. Плацдарм готов, вперед! Прилинкуем таблы SQL без сохранения пароля, запросам к серваку скажем тоже не сохранять пароль. Дело сделано. Теперь перезапускаем Абсцесс и логинимся как мощные юзера  Логин на сервер будет происходить с тем же именем и паролем, так что, как говорят итальянцы – “Null problemo!” Tip No1 – сначала надо дать права на объекты SQL Server БД, потому как ложил он на всех, кто подключается – у него своя система безопасности! (Это чтобы не сидеть как баран минут 15, пока дойдет где ошибка, как это уже было со мной). Tip No2 – проверить имя пользователя можно залогонившись через Query Anal, Пиши : select user_name() Вернет имя текущего пользователя (того, кто залогинился) Желаю тебе, чтоб оно совпало с логином. Если нет, то выведи пользователя из списка Server Roles и дай нормальные права на БиДе. P.S. Когда создашь пользователя, не забудь установить ему БиДе по умолчанию (без этого кое-где глючит, если оставить master). Вот, собственно, и всё! С тебя 100 грамм и пончик !)
|
|
|
|
|
Forum Guru
      
участник
Last Login: 29.06.2004 10:34
Сообщ.: 60,
Visits: 661
|
|
Насчет  я пошутил. Хотел намалевать :) Дуй за бухлом!
|
|
|
|
|
Forum Guru
      
участник
Last Login: 14.06.2006 13:40
Сообщ.: 71,
Visits: 783
|
|
| Как то все сомнительно, но я попробую... Может такую фичу в Access 2000 - SQL 2000 придумали для упрощения, но у меня Access 97 - SQL 7... Попробуем :)
|
|
|
|
|
Forum Guru
      
участник
Last Login: 14.06.2006 13:40
Сообщ.: 71,
Visits: 783
|
|
ВАУ!!!! ЗДОРОВСКО!!! :)))) СЕНКС!!! Ларчик просто открывался... :))) Спасибобольшоечеловеческое!!!
|
|
|
|
|
Forum Guru
      
участник
Last Login: 14.06.2006 13:40
Сообщ.: 71,
Visits: 783
|
|
| Одна проблема решилась - появилась другая, при таком логоне я могу отследить только имя пользователя через CurrentUser, пароль получить не получится, а все это нужно для коннекта через ADO... Как тут быть?
|
|
|
|
|
Forum Guru
      
участник
Last Login: 29.06.2004 10:34
Сообщ.: 60,
Visits: 661
|
|
Дорогуша! У меня тоже А97 - эСКуэЛь 7, да и лапшать не привык... А насчет АДО - очень скверно. Как говорят на родной Хохловщине, "Звыняй, бананив в нас нема!" С другой стороны, брось ты его и забудь (АДО то бишь). Jet на ODBC децл медленнее, но с другой стороны, больше внимания удели аккуратности написания проги, т.е. извлекай только нужные данные, делай спец-режимы (если надо внести платеж от клиента, сделай отвязную форму и кинь кнопку на toolbar, чтоб не пришлось для этого открывать список счетов организации даже пусть за ограниченный период (все равно запрос-то обрабатывается!)). И еще, скорость работы через мост Jet-ODBC = АДО = ODBCDirect = RDO = MAX(SPEED) если, батенька, смените идеологию. Даю маяк: хранимые процедуры в запросах к серверу. И ничего больше! Никаких линканых таблов! Линканым таблам бой! Ленивым програмерам тоже! Когда бухаем?
|
|
|
|
|
Forum Guru
      
участник
Last Login: 14.06.2006 13:40
Сообщ.: 71,
Visits: 783
|
|
Извини, бухать рано... Проблема решилась в ущерб другому, потому что имея собственную (не Акцессовскую) авторизацию я получал пароль, теперь я его получить не могу... Отсюда проблемы, которые надо решать... Это не выход. Что касается равенства, которое ты вывел, это еще можно поспорить :))) DAO ODBCDirect у меня не работает по причине сбоя библиотеки (софт сам понимаешь откуда :) ), я бы рад им попользоваться, но не могу, ради этого пришлось даже ADO осваивать :) По-мне, ADO быстра, если умело пользоваться...
|
|
|
|