Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 OPENROWSET и монопольный доступ  [new]
Михайло_
Member

Откуда:
Сообщений: 118
Сетевая mdb-база переносится на MS SQL Server. В какой-то момент все таблицы были экспортированы на сервер, а пользователи продолжали работать с файл-сервером, внося изменения в данные. Пытаюсь обновить записи на сервере данными из mdb-файла:

UPDATE Table1 SET ... FROM Table1 INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0','c:\baza.mdb';'admin';'',Table1) As Table1_mdb ON Table1.ID = Table1_mdb.ID

Получаю ошибку:

Поставщик OLE DB "Microsoft.Jet.OLEDB.4.0" для связанного сервера "(null)" вернул сообщение "Файл 'c:\baza.mdb' не может быть открыт ядром базы данных Microsoft Jet. Файл уже открыт другим пользователем для монопольного доступа или требуется разрешение на просмотр данных.".

Непонятность состоит в том, что INSERT INTO (для аналогичной SQL-команды с OPENROWSET) исполняется без ошибок. Если для INSERT INTO не требуется монопольного доступа к mdb-базе, то, может быть, кто-то знает как запретить открывать mdb-базу с монопольным доступом через OPENROWSET в случае с UPDATE?
6 янв 16, 10:35    [18646643]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET и монопольный доступ  [new]
Glory
Member

Откуда:
Сообщений: 104751
или требуется разрешение на просмотр данных
6 янв 16, 12:31    [18646850]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET и монопольный доступ  [new]
Михайло_
Member

Откуда:
Сообщений: 118
Все разрешения есть.
11 янв 16, 09:15    [18660878]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET и монопольный доступ  [new]
Glory
Member

Откуда:
Сообщений: 104751
Михайло_
Все разрешения есть.

Это вы так думаете или вы их где-то кому-то назначили ?
11 янв 16, 09:15    [18660880]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET и монопольный доступ  [new]
Михайло_
Member

Откуда:
Сообщений: 118
Запрос запускается от имени "sa", для mdb-файла - от имени "admin". Если указать путь к копии 'c:\baza.mdb', никем не открытой, то всё работает...
11 янв 16, 09:20    [18660885]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET и монопольный доступ  [new]
Glory
Member

Откуда:
Сообщений: 104751
Михайло_
Если указать путь к копии 'c:\baza.mdb', никем не открытой, то всё работает

Т.е. вы подтверждаете, что ваша база все таки кем-то открыта ?
11 янв 16, 09:22    [18660891]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET и монопольный доступ  [new]
Михайло_
Member

Откуда:
Сообщений: 118
Так ведь я этого никогда и не скрывал, а прямо это сразу указывал...
11 янв 16, 09:33    [18660914]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET и монопольный доступ  [new]
Glory
Member

Откуда:
Сообщений: 104751
Михайло_
Так ведь я этого никогда и не скрывал, а прямо это сразу указывал...

Тогда какого чудесного решения вы ждете ?
11 янв 16, 09:34    [18660917]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET и монопольный доступ  [new]
Михайло_
Member

Откуда:
Сообщений: 118
Непонятность состоит в том, что для команды UPDATE команда OPENROWSET требует монопольного доступа к mdb-базе, а INSERT INTO (для аналогичной SQL-команды с OPENROWSET) - нет.
Вопрос: как быть (кроме использования промежуточных таблиц)?
11 янв 16, 09:39    [18660931]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET и монопольный доступ  [new]
Glory
Member

Откуда:
Сообщений: 104751
Михайло_
Непонятность состоит в том, что для команды UPDATE команда OPENROWSET требует монопольного доступа к mdb-базе, а INSERT INTO (для аналогичной SQL-команды с OPENROWSET) - нет.
Вопрос: как быть (кроме использования промежуточных таблиц)?

Перечитайте сообщение
Оно говорит вовсе не том, что UPDATE нужен монопольный доступ.
А о том, что файл "уже открыт другим пользователем для монопольного доступа"
11 янв 16, 09:41    [18660934]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET и монопольный доступ  [new]
Михайло_
Member

Откуда:
Сообщений: 118
Даются на исполнение последовательно две команды:

INSERT INTO ... select ... from OPENROWSET('Microsoft.Jet.OLEDB.4.0','c:\baza.mdb';'admin';'',Table) where ...

UPDATE Table1 SET ... FROM Table1 INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0','c:\baza.mdb';'admin';'',Table1) As Table1_mdb ON Table1.ID = Table1_mdb.ID

Первая - выполняется, вторая - нет. Никто из пользователей не открывает mdb-базу с монопольным доступом...
11 янв 16, 09:57    [18660985]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET и монопольный доступ  [new]
Glory
Member

Откуда:
Сообщений: 104751
Михайло_
Первая - выполняется, вторая - нет. Никто из пользователей не открывает mdb-базу с монопольным доступом...

Ну конечно не открывал. Сервер все придумал.
Особенно это заметно, "если указать путь к копии 'c:\baza.mdb', никем не открытой, то всё работает.."
11 янв 16, 10:00    [18660989]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET и монопольный доступ  [new]
Михайло_
Member

Откуда:
Сообщений: 118
Если бы хотя бы кто-то из пользователей открывал mdb-базу в режиме монопольного доступа, то была бы невозможна многопользовательская работа в mdb-базе...
11 янв 16, 10:14    [18661025]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET и монопольный доступ  [new]
Glory
Member

Откуда:
Сообщений: 104751
Михайло_
Если бы хотя бы кто-то из пользователей открывал mdb-базу в режиме монопольного доступа, то была бы невозможна многопользовательская работа в mdb-базе...

Вы пытаетесь дать честное пионерское, что на момент выполнения команды mdb не открыт монопольно ?
11 янв 16, 10:18    [18661035]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET и монопольный доступ  [new]
Михайло_
Member

Откуда:
Сообщений: 118
Да.
11 янв 16, 10:19    [18661036]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET и монопольный доступ  [new]
Glory
Member

Откуда:
Сообщений: 104751
Михайло_
Да.

Вы тогда это честное пионерское серверу давайте.

Сообщение было отредактировано: 11 янв 16, 10:21
11 янв 16, 10:21    [18661040]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET и монопольный доступ  [new]
Михайло_
Member

Откуда:
Сообщений: 118
Да сервер пытается открыть базу монопольно, а не пользователи.
11 янв 16, 10:34    [18661087]     Ответить | Цитировать Сообщить модератору
 Re: OPENROWSET и монопольный доступ  [new]
Glory
Member

Откуда:
Сообщений: 104751
Михайло_
Да сервер пытается открыть базу монопольно,

Да что вы говорите
11 янв 16, 10:35    [18661093]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить