Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
michaelsmirnov
0 / 0 / 0
Регистрация: 25.07.2007
Сообщений: 41
1

ASP + Restore database ошибка Exclusive access could not be obtained because the database is in use.

29.02.2008, 16:44. Просмотров 2914. Ответов 6
Метки нет (Все метки)

На страничке ASP я вызываю скрипт, который восстанавливает базу данных из бэкапа.
Но, если кто-то незадолго до этого подключался к моему сайту (и т.е. к БД), то в пуле соединений IIS остается соединений с БД и пока его тайаут не истек, восттановление БД невозможно - пишет
Exclusive access could not be obtained because the database is in use.
Как это побороть?
Спасибо!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.02.2008, 16:44
Ответы с готовыми решениями:

Ошибка про Restore database
На страничке ASP я вызываю скрипт, который восстанавливает базу данных из бэкапа. Но, если кто-то...

SQLite DataBase - почему подчеркивает DataBase db: пишет (DataBase cannot be resolved to a type)
Здравствуйте! помогите понять почему подчеркивает DataBase db; пишет (DataBase cannot be...

Ошибка: Microsoft JET Database Engine error '80040e09' Cannot update. Database or object is read-only.
Microsoft JET Database Engine error '80040e09' Cannot update. Database or object is read-only. ...

Ошибка СУБД: Microsoft OLE Provider for SQL Server: The transaction log for database “DataBase” is full.
Иногда при работе 1С возникает ошибка следующего характера: Ошибка СУБД: Microsoft OLE...

Не проходят запросы к sqlite, ошибка: The database file is locked (database is locked)
Столкнулся с проблемой, и не понимаю из-за чего... Дело в том, что к одной таблице не проходят...

6
pl
51 / 17 / 6
Регистрация: 18.05.2007
Сообщений: 1,322
01.03.2008, 12:34 2
В скриптах сайта делай явное закрытие соединения с базой

oConn.Close
Set oConn = Nothing
0
michaelsmirnov
0 / 0 / 0
Регистрация: 25.07.2007
Сообщений: 41
02.03.2008, 10:10  [ТС] 3
к сожалению, именно так я и делаю.
это не помогает.
0
Sergik
02.03.2008, 10:42 4
интересный вопрос, вот несколько вариантов, которые приходят в голову (не проверял)
1)
допустим есть нужная БД - mydb
создаем пустую БД - blankdb
в DSN соединения прописываем blankdb как БД по-умолчанию; в каждом скрипте, которому требуется соединение с БД, в начале выполняем USE mydb, в конце - USE blankdb. Таким образом получиться, что в каждый момент времени, когда не выполняется ни один такой скрипт, к mydb не будет подключен ни один пользователь. Чтобы поймать такой момент (когда не выполняется ни один скрипт) надо хранить флаг в Session или в БД, если он взведен, то не давать пользователям соединяться с mydb (выводить сообщение 'сервер на профилактике, зайдите через 5 минут')
2) пропробовать сделать программно перед backup application.unload, вроде после этого пулинг сбрасывается, соответственно после unload нельзя давать соединяться с БД, для этого можно использовать все тот же флаг в Session или в БД
3) отключить пулинг, но это очень отрицательно скажется на производительности, если соединение не храниться в Session, а если хранится, то можно отключить пулинг в панель управления-ODBC и явно закрывать все соединения в Session (во всех Session!) перед backup
michaelsmirnov
0 / 0 / 0
Регистрация: 25.07.2007
Сообщений: 41
02.03.2008, 11:35  [ТС] 5
Что тут можно сказать...
1. Вариант писать use не подходит, так как все запросы на сайт идут через хранимые процедуры, а внутри них use писать нельзя.
2. На счет Application.UnLoad - проверил, оказывается пул не очищается при перезапуске приложения - а только при перезапуске сервиса IIS
3. Я не пользуюсь ODBC - я работаю через OLEDB
0
Sergik
02.03.2008, 12:07 6
совет из msdn:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/trblsql/tr_reslsyserr_2_7mb5.asp

Use the ALTER DATABASE SET SINGLE_USER to remove users from the database.

Or, wait until all users have finished using the database, and then use the RESTORE DATABASE statement. Make sure that you are not using the database being loaded when you issue the RESTORE DATABASE statement. Although not required, it is best to run the RESTORE DATABASE statement from the master database.
michaelsmirnov
0 / 0 / 0
Регистрация: 25.07.2007
Сообщений: 41
02.03.2008, 12:19  [ТС] 7
Огромное спасибо!
Заработало!
0
02.03.2008, 12:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2008, 12:19

Ошибка Access to the database file is not allowed
Ошибка при запуске. Access to the database file is not allowed.

Без причины ошибка The database file is locked (database is locked)
В общем, создал бота для телеграма. Использую один, естественно, статический объект Connection для...

ASP.NET, ADO.NET, Access database, ПРОБЛЕМА!!!
Есть база данных на Access. хочу с помощью ASP.NET, ADO.NET вывести данные. но почему -то не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru