![]() |
![]() |
![]() |
|
1cv77.SQL. Невозможно запустить базу в монопольном (State cannot be changed). Ø |
☑ | ||
---|---|---|---|---|
0
Eugene G
07.07.05
✎
06:41
|
Проблема следующая: имеется локальная база разработчика, локальный СКЛ сервер, с некоторого момента 1с стала отказываться запускать базу в монопольном режиме.
Выдаются сообщения: 1. Database state cannot be changed while other users are using the database 2. Alter Database statement failed. 3. sp_dboption command failed. . Выполнение скрипта: use master select * from master..sysprocesses ехес sp_who Показывает, что нет ни одного коннекта к данной базе. . Другие пользователи не работают по сети с этой базой, нет никаких процессов бекапа etc, база только для разработки, SQL Server Agent остановлен. . Самое интересное, что если запустить базу в разделенном режиме, закрыть запущенный сеанс, затем эта база спокойно открывается монопольно. Релиз 1с 25, SQL Server 2000 SP4, WinXP SP2. . Надоела уже эта ошибка, подскажите, что подкрутить. |
|||
1
Eugene G
07.07.05
✎
08:37
|
Случай клинический :(
|
|||
2
101
07.07.05
✎
08:47
|
http://search.rambler.ru/srch?words=Alter+Database+statement+failed+SQL+1%D1&where=1
ЗЫ вроде не маленький |
|||
3
Eugene G
07.07.05
✎
09:18
|
(2) Во всех этих ветках советуют воспользоваться sp_who, но я же говорю коннектов к этой базе нет, правда есть коннекты к базе NULL, может они мешают?
Сейчас обнаружил еще одну замечательрную особенность: стоп/старт СКЛ сервера не решают проблему, база все равно не открывается монопольно :)) Проблема начинает появлятся после сохранения БД. |
|||
4
МуМу
07.07.05
✎
09:24
|
То 3.
select * from master..sysprocesses ехес sp_who не дают гарантии того что у тебя именно на момент монопольного захвата базы никто в ней не сидит. Включи в профайрере события логин,логаут - это будет наверняка. У меня в одной из баз например web клиенты обращаются и при этом время обращения и жизни сессии может быть очень маленьким. |
|||
5
toypaul
07.07.05
✎
09:26
|
Жень, зайди в свойства базы и глянь закладку Options. убери ограниченный доступ если стоит.
|
|||
6
Eugene G
07.07.05
✎
09:27
|
(4) Нет-нет, к базе никто не может обращаться, говорю же я дописываю конфу.
Работаю на буке, иногда с отключенным сетевым интерфейсом. login, logout сейчас попробую включить, может чего и поймаю :) А могут быть еще варианты? |
|||
7
Eugene G
07.07.05
✎
09:34
|
(5) Галочка Restict Acsess не стоит.
Видно плохи наши дела :( |
|||
8
Gloom
07.07.05
✎
09:53
|
У меня такая фигня была, вылечил корректировкой процедуры sp_dboption - в случае, если эта процедура вызывается из 1цэ, отключал опцию WITH NO_WAIT в команде ALTER DATABASE...
|
|||
9
Eugene G
07.07.05
✎
12:10
|
(8) Блин, никак не могу отредактировать system stored procedures :(
Скрипт sp_configure 'allow updates','1' RECONFIGURE WITH OVERRIDE не помагает. . На мои запросы MSDN мне не дал ответа :( |
|||
10
Gloom
07.07.05
✎
12:18
|
(9)В таблице sysobjects в поле status поставь единичку для sp_dboption. Только старое значение запомни, чтоб потом обратно вернуть...
|
|||
11
Eugene G
07.07.05
✎
12:34
|
(10) Одни из последних строчек:
select @ехес_stmt = 'ALTER DATABASE ' + quotename(@dbname) +' SET ' + @alt_optname + ' ' + @alt_optvalue + ' WITH NO_WAIT' ехес (@ехес_stmt) Т.е. уже стоит WITH NO_WAIT, или я не туда смотрю? |
|||
12
Gloom
07.07.05
✎
12:37
|
(11)Дык, наоборот, отключить надо:
if app_name() = '1CV7' select @ехес_stmt = 'ALTER DATABASE ' + quotename(@dbname) +' SET ' + @alt_optname + ' ' + @alt_optvalue else select @ехес_stmt = 'ALTER DATABASE ' + quotename(@dbname) +' SET ' + @alt_optname + ' ' + @alt_optvalue + ' WITH NO_WAIT' |
|||
13
Eugene G
07.07.05
✎
12:54
|
(12) Здорово, пока работает без проблем.
Только парсер у меня попросил объявить переменную @ехес_stmt, чего я и сделал char(100). И еще имя приложения, все-таки наверное '1cv7s', а не '1cv7'? |
|||
14
Gloom
07.07.05
✎
12:59
|
(13)Вообще-то объявление ехес_stmt уже есть:
declare @ехес_stmt nvarchar(550) -- так что похоже ты чего-то наворотил А имя приложения именно 1CV7. |
|||
15
Eugene G
07.07.05
✎
13:04
|
(14) Похоже, что описание переменной я случайно прибил.
А поповоду имени приложения непонял, почему оно так называется, где посмотреть? Ведь диспетчер задач говорит другое... |
|||
16
Gloom
07.07.05
✎
13:10
|
(15)Task manager тут ни причём. В данном случае это то, что 1цэ передаёт серверу в параметре APP при подключении:
Name of the application calling SQLDriverConnect (optional). If specified, this value is stored in the master.dbo.sysprocesses column program_name and is returned by sp_who and the Transact-SQL APP_NAME function. |
|||
17
Eugene G
07.07.05
✎
13:15
|
(16) Понял, thanks.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |