Вход | Регистрация
 
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.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует