Подключение к запароленной базе данных Access через Oledb
От: Аноним  
Дата: 03.08.04 11:49
Оценка:
Приветствия,

У меня проблема: я не могу соединиться с запароленной базой данных MS Access. Для соединения я использую класс
OledbConnection с передачей параметров авторизации через строку соединения.

Начну с того, что строка "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=base.mdb" проходит и соединение устанавливается.

Из статьи
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdrefjetprovspec.asp
я посмотрел формат строки соединения для ADO. Но в System.Data.Oledb формат похоже изменили: c строкой соединения

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=base.mdb;User ID=admin;Password=123;";

после вызова Open() получаю исключение:
Cannot start your application. The workgroup information file is missing or opened exclusively by another user.

Пробовал поместить информацию о логине и пароле в Extended Properties, то есть
String conString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"nwp.mdb\";Persist Security Info=True;Extended Properties=\"User ID=admin;Password=123;";
— вылетает исключение, что строка соединения не соответствует спецификации с символа номер 82 т.е., как я понимаю, Extended Properties здесь не поддерживаются

В этой связи у меня 2 вопроса:

Как можно авторизоваться, не используя передачу имени пользователя и пароля в ConnectionString ?
Как должна выглядеть строка подключения к базе данных, закрытой паролем?

Заранее благодарен,
Андрей.
Re: Подключение к запароленной базе данных Access через Oled
От: Sergeant_BY Беларусь  
Дата: 03.08.04 12:06
Оценка:
Hello, !
You wrote on Tue, 03 Aug 2004 11:49:24 GMT:

> У меня проблема: я не могу соединиться с запароленной базой данных MS

> Access. Для соединения я использую класс OledbConnection с передачей
> параметров авторизации через строку соединения.
> после вызова Open() получаю исключение:
> Cannot start your application. The workgroup information file is missing
> or opened exclusively by another user.
http://support.microsoft.com/default.aspx?scid=kb;en-us;300699

With best regards,
Sergey
Posted via RSDN NNTP Server 1.9 beta
Re: Подключение к запароленной базе данных Access через Oled
От: Peter Fleischer Германия www.informtoools.de
Дата: 03.08.04 14:05
Оценка:
> Приветствия,
>
> У меня проблема: я не могу соединиться с запароленной базой данных
> MS Access. Для соединения я использую класс OledbConnection с
> передачей параметров авторизации через строку соединения.
>
> Начну с того, что строка "Provider=Microsoft.Jet.OLEDB.4.0; Data
> Source=base.mdb" проходит и соединение устанавливается.
>
> Из статьи
> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdrefjetprovspec.asp
> я посмотрел формат строки соединения для ADO. Но в System.Data.Oledb
> формат похоже изменили: c строкой соединения
>
> "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=base.mdb;User
> ID=admin;Password=123;";
>
> после вызова Open() получаю исключение:
> Cannot start your application. The workgroup information file is
> missing or opened exclusively by another user.
...

Андрей,
эта ошибка возникает, когда используешь защиту на уровне группы. Тебе надо включить в ConnectionString место и назваеие системной таблицы, напр. так на VB.NET:

...
    Dim cnn As New System.Data.OleDb.OleDbConnection
    Dim ConnString As New System.Text.StringBuilder
    With cnn
      If .State = ConnectionState.Open Then .Close()
      With ConnString
        .Append("provider=microsoft.jet.oledb.4.0;")
        .Append("data source=" & strFileName & ";")
        .Append("Jet OLEDB:System database=""c:\me\vb6\system.mdw"";")
...
        .Append("Password=""" & pw & """;")
      End With
      .ConnectionString = ConnString.ToString
      Try
        .Open()
        Return (cnn)
      Catch ex As Exception
        MsgBox("ошибка: " & ex.ToString)
        Return Nothing
      End Try
...


Peter
Posted via RSDN NNTP Server 1.8
Re: Подключение к запароленной базе данных Access через Oled
От: Nameless51  
Дата: 08.04.05 16:58
Оценка:
У меня та же проблема что и у автора, но воспользоваться ответом у меня не получается. В общем задача следующая: чтобы вместе с программой была БД под паролем, с которой программа бы и работала. Соответственно БД не должна зависить от конкретного компьютера. Можно как-нибудь в таком случае обойтись без mdw файлов, или если нельзя, зачем они нужны? как их создавать? Что задают имя, организация и код группы при создании рабочей группы.
Заранее спасибо!
Re: Подключение к запароленной базе данных Access через Oled
От: Аноним  
Дата: 08.04.05 19:07
Оценка:
Здравствуйте, Аноним, Вы писали:

если БД запоролена в Access через Tools->Security->Set Databes Password, то строка подключения будет
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=base.mdb;Jet OLEDB:Database Password=пароль;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.