Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Загрузка базы в SQL 2012. База данных уже открыта и одновременно к ней может обращаться то

v7: Загрузка базы в SQL 2012. База данных уже открыта и одновременно к ней может обращаться то
Я
   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  не восстанавливаются?
   Birmingem
 
4 - 06.11.18 - 11:23
(2)Что значит не открыта? При загрузке базы server management studio закрыт. После того как вылезла ошибка зашел server management studio, посмотрел базу, состояние обычное не single_user.
(3)Не знаю. На всякий случай сделал именно выгрузку, чтобы в крайнем случае в дбф загрузить.

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

каких уже не помню
   Birmingem
 
6 - 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) есть такое. только насколько помню, эти случаи дают другие сообщения об ошибках
   Birmingem
 
9 - 06.11.18 - 11:41
(7)Проверил. Общих реквизитов документов нет.
ТиИ пока сделать возможности нет. Рабочая база находится далеко. Как загрузится в ДБФ, попробую из ДБФ выгрузить и снова в SQL загрузить.

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

(8)В SQL не силен. Как посмотреть лог базы? И на что именно там обращать внимание?
   Birmingem
 
10 - 06.11.18 - 11:43
Из 1С подключался к SQL как под SA, так и отдельного пользователя SQL создавал. Результат тот же.
 
 Рекламное место пустует
   АгентБезопаснойНацио
 
11 - 06.11.18 - 11:47
(9) Управление-Журналы SQLServer
ну или натрави профайлер на загружаемую базу, посмотри, что происходит на момент ошибки.
   Birmingem
 
12 - 06.11.18 - 15:18
В ДБФ загрузилась нормально
   ikea
 
13 - 06.11.18 - 15:26
(0) Уже давно бы поставил SQL 2005 и забыл. Но будет еще 3 дня бороться с мельницами.
   АгентБезопаснойНацио
 
14 - 06.11.18 - 15:30
(12) а что в логах? что говорит товарищ Профайлер?
(13) разводить зоопарк стоит только в экстренных случаях. у него не экстренный. и вообще, "лучше день потерять, а потом за 5 минут долететь!"©
   Birmingem
 
15 - 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с-ина его не удаляет
   1snik_d
 
23 - 19.11.18 - 11:31
Получилось найти решение, такая же проблема?
   1snik_d
 
24 - 19.11.18 - 11:33
Еще такое же вываливается, если запускаешь восстановление последовательности через Операции - Проведение документов. После проведения некоторого количества документов такое сообщение.
   Ёпрст
 
25 - 19.11.18 - 11:39
(24) какая версия sql, как дружили , какой режим совместимости ?
   Ёпрст
 
26 - 19.11.18 - 11:40
если че, версию скуля понижать не надо в настройках sql
   1snik_d
 
27 - 19.11.18 - 11:44
(25) SQL 2014, секретный релиз, режим совместимости пробовал разный, эффект одинаковый. Сейчас стоит без понижений.
   MadDAD
 
28 - 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')"

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

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

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


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

USE master
GO

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

(41) Не помогло. Сильно разбираться неохота было, решил так вот читернуть.
Кстати, от этого ещё и дополнительная польза есть. Можно в базе что-нибудь посмотреть, пока проводится.
   Sserj
 
46 - 26.11.18 - 12:15
(42)У меня единственная проблема при загрузки базы секретным релизом в SQL2017 были документы без реквизитов шапки (в типовой ТИС это  к примеру КнигаПокупок и КнигаПродаж). Набросай обработку по метаданным и добавить к таким в шапку реквизит любой. Потому как без реквизитов таблицы шапок не создаются и при загрузки на индексировании 1С просто умирала молча.
   1snik_d
 
47 - 26.11.18 - 12:27
(45) Красава, но вообще читерство - зло ))
   guest1
 
48 - 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
Теперь при загрузке данных вылетает данный сабж.
Что не так?
   guest1
 
49 - 06.12.18 - 18:35
Апну
 
 Рекламное место пустует
   MadDAD
 
50 - 07.12.18 - 08:14
(48)
1. после того как 1С вылетела с ошибкой, проверить загруженные данные. Например посмотреть в таблицу журнала. Если загрузилось все, то продолжаем дальше
2. Запустить ТиИ с пересчетом итогов.
3. Больше не пользоваться выгрузкой 1С.

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует