Имя: Пароль:
1C
1C 7.7
v7: Загрузка базы в SQL 2012. База данных уже открыта и одновременно к ней может обращаться то
0 Birmingem
 
06.11.18
11:01
Обратился заказчик, у него база 1С 7.7 в SQL 2005.
Выгрузил (выгрузкой 1С), получилось 73 Мб в zip.
У меня на работе комп с Win 2012 и SQL 2012. В SQL 2012 есть базы 1С 8.3, так что не хотелось бы ставить SQL 2005.
На этом компе в папку 1С 7.7 положил файлы BkEnd.dll и BkEndUtls.dll из Solution7 (так называемый секретный релиз 1С).
В SQL 2012 создал базу, совместимость с SQL 2005.
1С к этой базе нормально подключилась. Запустил загрузку данных. Вроде все хорошо, идет загрузка... Но под конец, возможно при переиндексации или при пересчете итогов, выдает сообщение "База данных уже открыта и одновременно к ней может обращаться только один пользователь".
В SQL размер загруженной базы 2,8 Гб.
Подскажите, как решить?
1 Карст
 
06.11.18
11:04
не совсем так подсоединил базу , видимо и монопольно зайти не сможешь
либо переподключай к скулю либо ищи развернутый мануал
2 АгентБезопасной Нацио
 
06.11.18
11:16
в server management studio база не открыта?
3 АгентБезопасной Нацио
 
06.11.18
11:17
кстати, бэкапы 2005 разве в 2012  не восстанавливаются?
4 Birmingem
 
06.11.18
11:23
(2)Что значит не открыта? При загрузке базы server management studio закрыт. После того как вылезла ошибка зашел server management studio, посмотрел базу, состояние обычное не single_user.
(3)Не знаю. На всякий случай сделал именно выгрузку, чтобы в крайнем случае в дбф загрузить.

Сейчас как раз, идет загрузка в ДБФ. Это чтобы проверить, не битая ли база.
5 1Сергей
 
06.11.18
11:26
там надо сделать ряд каких-то действий в sql, чтобы клюшки его поняла

каких уже не помню
6 Birmingem
 
06.11.18
11:30
Провел эксперимент.
Создал базу SQL, также как в предыдущий раз. Создал новую базу в 1С, подключил в к базе SQL.
Потом загрузил только конфигурацию, взятую из выгрузки, сохранил, и вуаля - 1С запустилась!
Создал пару элментов справочников, ввел документ, провел, сформировал отчет.
Попробовал заходить как монопольно так и не монопольно. Все работает.
Т.е. создал новую чистую базу на SQL 2012.

Тогда почему же при загрузке из архива выдает ошибку?
7 Карст
 
06.11.18
11:32
несколько способов приспособить SQL.

- общие реквизиты неограниченной длины должны стоять в конце списка
- перед выгрузкой сделать ТиИ
8 АгентБезопасной Нацио
 
06.11.18
11:37
(4) а в логах по этой базе что?
(7) есть такое. только насколько помню, эти случаи дают другие сообщения об ошибках
9 Birmingem
 
06.11.18
11:41
(7)Проверил. Общих реквизитов документов нет.
ТиИ пока сделать возможности нет. Рабочая база находится далеко. Как загрузится в ДБФ, попробую из ДБФ выгрузить и снова в SQL загрузить.

Настраивал "Секретный релиз платформы v77.27.7" согласно http://catalog.mista.ru/public/82018/
Там только две ДЛЛ в 1С/Бин положить надо и все.

(8)В SQL не силен. Как посмотреть лог базы? И на что именно там обращать внимание?
10 Birmingem
 
06.11.18
11:43
Из 1С подключался к SQL как под SA, так и отдельного пользователя SQL создавал. Результат тот же.
11 АгентБезопасной Нацио
 
06.11.18
11:47
(9) Управление-Журналы SQLServer
ну или натрави профайлер на загружаемую базу, посмотри, что происходит на момент ошибки.
12 Birmingem
 
06.11.18
15:18
В ДБФ загрузилась нормально
13 ikea
 
06.11.18
15:26
(0) Уже давно бы поставил SQL 2005 и забыл. Но будет еще 3 дня бороться с мельницами.
14 АгентБезопасной Нацио
 
06.11.18
15:30
(12) а что в логах? что говорит товарищ Профайлер?
(13) разводить зоопарк стоит только в экстренных случаях. у него не экстренный. и вообще, "лучше день потерять, а потом за 5 минут долететь!"©
15 Birmingem
 
06.11.18
15:37
Предпоследняя запись:
Setting database option SINGLE_USER to ON for database MyBase
и через 30 минут
Setting database option MULTI_USER to ON for database MyBase
Больше записей нет.
16 АгентБезопасной Нацио
 
06.11.18
15:47
посмотреть бы, в мульти он переключился до ошибки, или после...
в общем, натравливай профайлер, запускай загрузку - завтра смотри лог профайлера.
17 Ёпрст
 
06.11.18
16:29
(0) lck то прибей в каталоге
18 АгентБезопасной Нацио
 
07.11.18
07:16
(17) всего-то? а разве пофигуратор его сам удалить не пробует?
19 Карст
 
07.11.18
15:02
(18) если он каталог с базой копировал - могло остаться , так же как и варианты 1Cv7.$ui ... 1SJOURN.$lk и прочее
20 АгентБезопасной Нацио
 
07.11.18
15:09
(19) могло. но все файлы блокировки, насколько помню, при отваливании от держащего сеанса но при попытке создания блокировки - удаляются...
несколько сумбурно выразился но смысл такой: - если  сеанс отвалился от 1SJOURN.$lk - то другой сеанс при первой попытке блокировки попытается удалить файлик.
21 Ёпрст
 
07.11.18
15:44
(20) неа, при аварийном завершении процесса, lck остается
22 Ёпрст
 
07.11.18
15:44
и 1с-ина его не удаляет
23 1snik_d
 
19.11.18
11:31
Получилось найти решение, такая же проблема?
24 1snik_d
 
19.11.18
11:33
Еще такое же вываливается, если запускаешь восстановление последовательности через Операции - Проведение документов. После проведения некоторого количества документов такое сообщение.
25 Ёпрст
 
19.11.18
11:39
(24) какая версия sql, как дружили , какой режим совместимости ?
26 Ёпрст
 
19.11.18
11:40
если че, версию скуля понижать не надо в настройках sql
27 1snik_d
 
19.11.18
11:44
(25) SQL 2014, секретный релиз, режим совместимости пробовал разный, эффект одинаковый. Сейчас стоит без понижений.
28 MadDAD
 
19.11.18
12:02
(27) Там есть служебный процесс, который считает статистику в фоне. Конфигуратор при восстановлении базы сначала переключает в Single USer, затем восстанавливает данные, потом переключает базу в Multi USer. Затем он пытается снова переключить в Single для пересчета итогов. И в это время запускается служебный процесс, который этому мешает.

Без секретного релиза это решалось патчем BKEND.dll - замена имени таблицы sysprocesses на sysprocesse1 к примеру. И созданием View "sysprocesse1" с отбором только процессов 1СV7. В этом запросе "Select COUNT(*) from master..sysprocesses where dbid=DB_ID('%s')"

Как с этим работает секретный релиз - хз. Но можно попробовать то же самое
29 MadDAD
 
19.11.18
12:07
Вот тут готовое решение - http://forum.ru-board.com/topic.cgi?forum=8&topic=34526&start=20#18
30 1snik_d
 
19.11.18
13:37
(29) Огроменное спасибо за наводку, куда копать. Все получилось, проведение работает теперь, не вываливаается.
31 1snik_d
 
26.11.18
10:21
Недолго музыка играла ((
Вообщем проблема никуда не делась. Может можно как-нибудь заставить сервер не запускать фоновые задания для определенной ИБ.
32 1snik_d
 
26.11.18
10:22
(31) На время перепроведения документов
33 ADirks
 
26.11.18
10:40
(31) Можно зайти с другой стороны: после запуска 1С выключить монопольный режим
ALTER DATABASE CURRENT SET MULTI_USER

я так и сделал :)
34 1snik_d
 
26.11.18
10:46
(33) А можно поподробнее, а то я делаю так, а SQL ругается
В настоящий момент невозможно изменить состояние или параметры базы данных "tiscopy". База данных находится в однопользовательском режиме, и в настоящий момент к ней подключен пользователь.
35 ADirks
 
26.11.18
11:34
(34) Это не в студии надо делать, а внутре 1С. Можно прям при старте системы, можно в обработку запилить.

ЗапросСКЛ = СоздатьОбъект("ODBCRecordSet");
рез = ЗапросСКЛ.Выполнить("
|ALTER DATABASE CURRENT
|SET MULTI_USER
|");
Если рез <> 1 Тогда
    Сообщить(ЗапросСКЛ.ПолучитьОписаниеОшибки());
    ВЛог("ВосстановлениеГП", ЗапросСКЛ.ПолучитьОписаниеОшибки());
КонецЕсли;


Кстати, это как раз из обработки проведения (востановления ГП). Если надо, могу поделиться.
36 АгентБезопасной Нацио
 
26.11.18
11:37
(35) а что там особенного-то можно придумать? это раньше, на 2000, надо было извращаться с РеконнектНатив...
37 ADirks
 
26.11.18
11:52
(36) да просто чтобы очередной раз велосипед не пилить
38 1snik_d
 
26.11.18
11:56
(35) Так работает перепроведение, не падает. Получается полноценного монопольного режима в таком раскладе не сделать?
Ну т.е. SINGLE_USER на секретном релизе не совсем правильно работает?
39 Sserj
 
26.11.18
12:04
(9) Там не только 2 dll надо положить. Еще если у ты из 1С подключаешься не с пользователм sa то нужно права на просмотр подключений дать пользователю
40 Sserj
 
26.11.18
12:05
+(39) Вот запрос из мануала Solution7

USE master
GO

GRANT VIEW SERVER STATE TO <your_login>
GO
41 Sserj
 
26.11.18
12:08
(38) Нужно инструкции перед возникновением проблем читать :)
Вот цитата из ридми Solution7:
"..Большинство "специалистов" запускает 1с под учеткой SA (или другой, но с соответствующими суперправами), следовательно, у них такой проблемы не стоит. Зато имеется другая проблема - так называемый фоновый процесс сброса грязных страниц из кэша буфера данных, при выполнении которого, не удается запустить 1с в монопольном режиме..."
42 1snik_d
 
26.11.18
12:09
(41) Это все было сделано в первую очередь. И учетка отдельная заведена и права даны...
43 1snik_d
 
26.11.18
12:10
(41) Да и проблема в монопольном режиме возникает в 2-х случаях. При пересчете итогов и при перепроведении документов в ТА. А так монопольный режим работает без нареканий.
44 1snik_d
 
26.11.18
12:11
(41) Там куча комментариев к публикации с такой проблемой без решения.
45 ADirks
 
26.11.18
12:14
(38) Похоже, Спок не обе все ситуации излечил. Там 2 таких запроса, и один из них остался без коррекции.

(41) Не помогло. Сильно разбираться неохота было, решил так вот читернуть.
Кстати, от этого ещё и дополнительная польза есть. Можно в базе что-нибудь посмотреть, пока проводится.
46 Sserj
 
26.11.18
12:15
(42)У меня единственная проблема при загрузки базы секретным релизом в SQL2017 были документы без реквизитов шапки (в типовой ТИС это  к примеру КнигаПокупок и КнигаПродаж). Набросай обработку по метаданным и добавить к таким в шапку реквизит любой. Потому как без реквизитов таблицы шапок не создаются и при загрузки на индексировании 1С просто умирала молча.
47 1snik_d
 
26.11.18
12:27
(45) Красава, но вообще читерство - зло ))
48 guest1
 
06.12.18
17:30
Добрый был день.
Тоже переходим с MS SQL 2005 на 2012.
Та же проблема - база вываливается при монопольной режиме в ошибку "База данных уже открыта ...".
Что было сделано:
1. Из 1с ver.27 выгрузили данные
2. Установили MS SQL 2012
3. В MS SQL создали пользователя userSQL с правами db_owner
4. В MS SQL создали новую базу с владельцем userSQL
5. Удалили BIN 1C
6. Установили по новому 1С, заменили BKEnd.dll на BKEnd0.dll
и добавили две новой DLL из Solution 7
Теперь при загрузке данных вылетает данный сабж.
Что не так?
49 guest1
 
06.12.18
18:35
Апну
50 MadDAD
 
07.12.18
08:14
(48)
1. после того как 1С вылетела с ошибкой, проверить загруженные данные. Например посмотреть в таблицу журнала. Если загрузилось все, то продолжаем дальше
2. Запустить ТиИ с пересчетом итогов.
3. Больше не пользоваться выгрузкой 1С.

После выполнения персчетов сравнить регистры и оборотки в предыдущей версии базы и в новой.
51 ADirks
 
07.12.18
08:24
(48) 1. То что ты пишешь, не имеет никакого отношения к проблеме.
2. Заколебали вы со своим ТиИ. Не надо этого делать по поводу и без.
52 guest1
 
07.12.18
08:49
Добрый день.
В место выгрузки/загрузки просто развернули архив из MS SQL 2005 в MS SQL 2012. Не запуская 1С, выполнили скрипт
DBCC CHECKDB ("имя базы", REPAIR_REBUILD). Как ни странно, 1С поднялась и бодро бегает. Но остался вопрос монопольного режима. Как выше писали - он нужен только для восстановления последовательности (групповое перепроведение) и работа с итогами: открытие периода (если есть компонента Оперативный учет) и полный пересчет бух.итогов. У нас постановление последовательности работает без использования монопольного режима, а работа с итогами - только монопольный режим.
53 ADirks
 
07.12.18
08:56
(52) Для пересчета итогов регистров в немонопольном режиме есть УстановкаТА.ert или Установка_ТА_2_2.ert. А вот с бухитогами никто не заморочился. Так что
ALTER DATABASE CURRENT SET MULTI_USER
54 guest1
 
07.12.18
08:59
(51)
Так вроде проблема именно в режиме SINGLE_USER. При монопольном режиме в базу "лезет" sa и вот тут ошибка. Вроде так.
55 ADirks
 
07.12.18
09:06
(54) проблема в том, что 1С выполняет команды, которые, видите ли, в SQL 2012 посчитали устаревшими, и выпилили их напрочь. Секретный релиз такое исправляет, но как оказалось не всё.

В базу лезет не sa, а тот пользователь, которого указали в настройках "параметры БД SQL".
56 guest1
 
07.12.18
09:15
(53)
Беда у нас в том, что пересчет бух итогов идет в пакетном режиме раз в неделю ночью. считает около 1,5 часов. Но раз последние MS SQL не моут корректно работать с 1С v7.7 то придется использовать "костыль" ALTER DATABASE CURRENT SET MULTI_USER.
57 guest1
 
07.12.18
09:27
Кстати, пересчет итогов через конфигуратор вроде идет.
Остался вопрос про открытие периода обработкой УстановкаТА.ert
Может есть возможность поделится обработкой?
58 guest1
 
07.12.18
09:30
А нет, нашел у себя УстановкаТА.ert.
59 ADirks
 
07.12.18
09:34
(58) Регистры с измерениями типа "Неопределено" есть? Если нет, то хорошо. Если есть, то надо модифицированную версию, которая 2.2.
Могу заслать.
60 guest1
 
07.12.18
09:36
Блин, да, есть такие измерения.
61 guest1
 
07.12.18
09:41
(59)
Буду благодарен за обработку
62 ADirks
 
07.12.18
09:42
(61) куда слать то?
63 guest1
 
07.12.18
09:54
64 guest1
 
07.12.18
09:55
Кстати, пересчет итогов через конфигуратор выполнился.
65 guest1
 
07.12.18
10:08
Отправили? (62)
66 ADirks
 
07.12.18
10:09
ушло
67 guest1
 
07.12.18
10:28
Поймал, спасибо.
68 guest1
 
07.12.18
10:35
Получается для того чтобы 1С v7.7 переселить на MS SQL старше 2005 необходимо:
1. развернуть архив, созданный в предыдущем MS SQL, в чистую базу на новом сервере MS SQL.
2. В папке BIN выполнить переименование BKEND.dll на
BKEND0.dll и добавить 2 dll из "секретного релиза".
На этом все.
Что в плюсе - 1с 7.7 продолжает жить на новом серваке
Что в минусе - 1с 7.7 теряет все плюшки монопольного режима, кот. заменяются обработками и пакетным режимом для конфигуратора.
69 ADirks
 
07.12.18
10:55
(68) Как-то так. Но, честно говоря, какие такие плюшки даёт монопольный режим - я прям теряюсь :)
До недавнего времени даже и не знал, что такая проблема имеет место. Как-то не надо было (да и сейчас не особо надо).
70 guest1
 
07.12.18
12:19
Продолжаем шаманить.
Источник Проблема c 1C 77 под SQL 7.0 SP2
1.Флажки Auto create/update statistics
которые ставятся по дефоулту в свойствах базы сняли.
2.Параметр Recovery Interval = 20
Помогло.
Начало работать в монопольном режиме перепроведение документов и пересчет итогов без ошибки №924.