Доброе время суток. Установил FRAMEWORK.NET и урезанный MSSQL в редакции MSDE. Пишу на C#. Накрапал простенькую прогу и скомпилил (консольным csc.exe)
Перебрал кучу вариантов ConnectionString но не могу подключиться к БД. Пробовал класс OleDbConnection и SqlConnection — одна и таже петрушка
Установил VS.NET и попробовал в окне дизайнера через Server Explorer — все подключается. Копирую оттуда строку соединения к себе в прогу — ни гугу
Вот строка соединения:
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=igor;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=IGOR;Use Encryption for Data=False;Tag with column collation when possible=False
Вот какой получаю эксепшн: Login failed for user 'IGOR\ASPNET'
Юзер АСПНЕТ на машине присутствует как-бы незримо — залогиниться под ним нельзя, под ним крутится вроде как сам процесс среды аспнет.
Вместо Integrated Security=SSPI пробовал разные User ID=sa — говорит, что пользователя нет в списке для Trusted Sql Server. Где энтот список?
Что делать? Что проверять? Где ошибка?
Может это MSDE настолько кривой (при установке, кстати, не захотел ставиться без ключа SAPWD="AStrongSAPwd" — может в этом грабли?)
ВиндаХРпрофешнл.
Здравствуйте, Yachtsman, Вы писали:
Y>Здравствуйте, Ponch, Вы писали: P>>Вот какой получаю эксепшн: Login failed for user 'IGOR\ASPNET'
Y>А добавить этого пользователя в БД не пробовали?
Как добавить? Какие утилиты из пакета MSDE юзать?
ПС. У меня неполный MSSQL а обрезок MSDE.
Здравствуйте, Ponch, Вы писали:
P>Как добавить? Какие утилиты из пакета MSDE юзать? P>ПС. У меня неполный MSSQL а обрезок MSDE.
MSDE это не обрезок, а вполне функциональная вещь (к тому же бесплатная). Добавить можно либо через osql.exe и командную строку, либо поставить клиентские утилиты от Sql Server — и добавить пользователя через Enterprise Manager. Второе явно проще.
SqlConnection sc = new SqlConnection("Server=localhost;Database=myDB;Integrated Security=SSPI;Persist Security Info=False;")
Такой подход является не очень хорошим. Соединение будет использовать интегрированную виндовз секурити: если ASP работтает под пользователем ASPNET его придется сооздавать в скл сервере, что криво; если под имперсонизированным пользователем — еще хуже так как для каждого пользователя будет создан свой пул коннектов, что также не есть хорошо — коннектов то всего 5
Имхо лучшее решение — создать для каждой группы пользователей пользователя в базе.
Спасибо за ссылки а также всем ответившим.
Проблема решилась след. образом: действительно соединение с базой под под ISS и ASP.NET происходит под виртуальным юзером '<имя ПК>\APSNET'. Его я прописал в базах MSDE посредством скрипта sp_grantlogin и др. скриптов, дающих доступ к БД (долго ковырялся в MSDN и в инете, тк никакой литературы нет вообще — лень ехать на книжный рынок . Зато от души наигрался в запуски хранимых процедур sp_*, т.к. визуальных средств в MSDE нет вообще
Попутно еще поковырялся на предмет ключа ЛогинМоде для MSDE в реестре Винды. Выставил комбинированный логин не только с учетных записей винды, но и с юзеров, прописанных в базах MSDE. Все чудненько работает как под трастед_конекшнз так и под прописанным в БД юзером. Но появилось кучу других сумбурных вопросов — но в виде стройных мыслей еще не созрели
Еще раз спасибо.
Здравствуйте, ZevS, Вы писали:
G>>Чем это прямее чем добавить пользователя аспнет в sql? Разумеется речь идет о случаях, когда это возможно сделать.
ZS>Ну возьмем простейшую ситуацию — возникнет необходимость перенести базу на выделенный сервер БД. Ваши предложения по этому поводу?
Я как мне казалось явно написал что этот случай не рассматривается.
Здравствуйте, Gollum, Вы писали:
G>Я как мне казалось явно написал что этот случай не рассматривается.
Что-то я не заметил где это написано....
Я же про тот случай когда в данный момент и IIS и MSDE стоят на одной машине и сделать так вроде можно. Однако это не очень правильно (или даже очень неправильно) с точки зрения дальнейшей эксплуатации.
Приведу аналогию:
Одними из основных причин возникновения новых методологий программирования (структурное программирование -> ООП -> АОП -> ...) были как раз сопровождаемость + гибкость.
Вы же не будете пропив использования ООП если все можно закодировать более быстро одной функцией main и с использованием оператора goto?
Здравствуйте, ZevS, Вы писали:
ZS>Что-то я не заметил где это написано....
Видимо я не смог донести что подразумевалась именно такая ситуация.
ZS>Я же про тот случай когда в данный момент и IIS и MSDE стоят на одной машине и сделать так вроде можно. Однако это не очень правильно (или даже очень неправильно) с точки зрения дальнейшей эксплуатации.
MSDE он на то и MSDЕ Сразу видно что проект мелкий. Зачем мне изобретать нового пользователя? Зачем шифровать логин и пароль в конфиг файле или пихать его в реджистри для пущей надежности? Когда можно сделать все быстро и просто.
ZS>Приведу аналогию:
Я не согласен с этой аналогией Изменить строку соединения в web.config — дело минуты, никакого рефакторинга производить не нужно. Никакой особой кривизны в этом подходе нет.