Имя: Пароль:
1C
1С v8
Запрос на различных серверах
, ,
0 vasiliy_oren
 
17.05.21
12:35
Доброго времени суток Дамы и Господа.
И опять прошу Вашей помощи :)
Вкратце суть проблемы: Есть сервер, на котором крутиться MS SQL и 1С. Купили такой же сервер и решили перенести 1С на новый сервер, а на старом оставить MS SQL.
Сказано, сделано. На новом сервере развернули 1С (тот же релиз, что и на старом).
Но при проверке работоспособности возникла абсолютно непонятная ситуация:
При работе со старым сервером (подключение к службе 1С старого сервера), все данные корректы.
При подключении к новому серверу (подключение к службе 1С нового сервера, подключение к СУБД старого сервера), при выполнении запроса (идентичный запрос, что на новом, что на старом сервере), результат запроса теряет периоды, и, соответственно, выдает неверную информацию.
Примеры результатов запросов:
Результат запроса старого сервера:
https://cloud.mail.ru/public/ttqM/pPxapzDJ1

Результат запроса нового сервера:
https://cloud.mail.ru/public/QbJm/DYMN8iKLr

Возможно проблема в том, что на старом сервере стоит Win 2012, а на новом Win 2008.

Так же помню, что несколько лет назад читал о данной проблеме, и решением было установка WorkFlow для SQL, но нигде сейчас не могу найти описание и решение подобной проблемы.

Если кто то сталкивался с данной проблемой и успешно решил ее, прошу помочь :)

Заранее огромное спасибо!
1 arsik
 
гуру
17.05.21
12:40
Извиняюсь, но все же.. У вас 2 коннекта к 1й базе SQL одновременно?
2 H A D G E H O G s
 
17.05.21
12:52
Мммм, загадки Жака Фреско.
Ну, допустим, первую ошибку вы сделали, когда решили разнести SQL и 1С.

Что по периодам - возможно смещение дат в 2000 не поставили, но не похоже.
И да, подключаться к одной SQL базе с разных серверов 1С чревато нарушением целостности.
3 vasiliy_oren
 
17.05.21
12:53
(1) Да, все верно, 2 коннекта.
Один на старом (был изначально), второй на новом.
Оба коннекта отдельные кластеры: Старый - подключение localhost, новый - имя сервера. (2)

(2) Семщение дат проверил, все ок, на новом сносил 1С, ставил, бестолку.
На новом пока никто не работает.

Ну, допустим, первую ошибку вы сделали, когда решили разнести SQL и 1С. - Почему?
4 vasiliy_oren
 
17.05.21
12:55
(2) Оба сервера соединены 10 Гб сетью, так что обмен между ними не будет "узким" местом
5 ДенисЧ
 
17.05.21
12:57
Два сервера 1с коннектятся к одной sql-базе? Руки давно не обрывали? Или уже оборвали и пришили на законное место?
6 arsik
 
гуру
17.05.21
12:59
(3) (5) :)) Ну это ненадолго, надеюсь бэкапы делаются. Хотя с такими кривыми руками бэкап не поможет.
7 H A D G E H O G s
 
17.05.21
13:00
(4) Будет
8 vasiliy_oren
 
17.05.21
13:01
(5) Еще раз - на новом сервере никто не работает, до перехода на новый сервер все пользователи работают на старом сервере. Никаких изменений в СУБД на новом сервере не производиться - только выборка данных по запросам. Как раз и наткнулся на такую проблему при проверке.
9 vasiliy_oren
 
17.05.21
13:04
Друзья, ок, тогда подскажите, почему эта схема, которая предложена и 1С в том числе не имеет права на жизнь. Ок, отключил новый коннектор, но вопрос остался открытым
10 Йохохо
 
17.05.21
13:05
если на периоды обратить внимание результаты совпадут?
11 fisher
 
17.05.21
13:06
(0) Не слышал про такое чудо. Покажи проблемный запрос. Не исключено, что он настолько кривой, что способен выдавать недетерминированный результат в разном окружении.
(9) Да имеет. И многие так работают. Просто когда на одном серваке - плюшки к производительности.
12 vasiliy_oren
 
17.05.21
13:11
(11) В том то и дело, что любой запрос, который имеет реквизиты типа дата :(
По производительности - как раз и будем проверять, если производительность будет ниже - вернемся на балансировку
13 vasiliy_oren
 
17.05.21
13:12
(10) Да, если разгруппировать запрос - данные идентичны, но без дат в реквизитах типа даты
14 vasiliy_oren
 
17.05.21
13:13
(11) Стандартные запросы в УТ 10. Сомневаюсь, что 1Сники в своей типовой конфе могут так накосячить со всеми запросами
15 fisher
 
17.05.21
13:14
(12) Тогда очень похоже что разное смещение дат в кластерах настроено. Как выше и говорили.
16 H A D G E H O G s
 
17.05.21
13:16
Что говорит профайлер?
17 H A D G E H O G s
 
17.05.21
13:16
(12) "вернемся на балансировку"

Это что за чудо?
18 fisher
 
17.05.21
13:19
(17) Это когда система балансирует на остатках ресурсов.
19 vasiliy_oren
 
17.05.21
13:20
(15) SQLYOffs=2000; на обоих настройках кластера. Перепроверил раза 3 или 4
20 vasiliy_oren
 
17.05.21
13:22
(17) Это как раз вторая схема, которую предлагает 1С - 1 сервер - 1с И SQL, 2 сервер - только 1С. Рабочий сервер сервера 1 - главный, и балансирует (распределяет) сесии по двум серверам
21 fisher
 
17.05.21
13:24
(19) Интересно. Тогда давай подробности. Неправильно работает отбор по датам или вообще неправильно отображается информация в полях типа "Дата"?
(20) То есть у вас сейчас два рабочих сервера в кластере? На разных хостах и куплено две серверных лицензии 1С?
22 vasiliy_oren
 
17.05.21
13:32
(21) Да, все верно. Было 2 сервера, на обоих стоят 2 серверные лицензии, сейчас старый сервер заменили на новый.
Какие именно подробности? Примеры выполнения запроса на обоих серверах я указал.
Какие данные еще могут быть нужны?
23 программистище
 
17.05.21
13:49
сделай копию базы и подключись новым сервером к копии и проверь, должно работать нормально, проверял?
может разные версии платформы 1с?
24 ptiz
 
17.05.21
13:59
(0) Кластер должен быть один, точка входа - одна. Если вы сделали 2 кластера к одной базе в СУБД, это точно не рекомендации 1С.
25 vasiliy_oren
 
17.05.21
14:05
(24) Хорошо, согласен, до рабочего дня я добавил новый кластер, начал его тестировать, но возникла такая проблема, которая описана выше.
Возможно эта ошибка связана как раз с тем, что используется 2 кластера, попробую сегодня после раб дня удалить старую точку входа и проверить новую, но, думаю, ошибка останется
26 H A D G E H O G s
 
17.05.21
14:08
(20) Жесть, как она есть
27 vasiliy_oren
 
17.05.21
14:24
28 программистище
 
17.05.21
14:27
Удивляет два кластера, наверное
а должно быть Кластер 1, а там два сервера тогда уж
29 fisher
 
17.05.21
14:28
(22) > Какие именно подробности?
Я вроде бы внятно сформулировал. Но повторю еще раз.
Неправильно работает отбор по датам или вообще неправильно отображается информация в полях типа "Дата"?
30 vasiliy_oren
 
17.05.21
14:32
(29) Неправильно отображается информация в полях типа "Дата". Приложил 2 запроса с двух серверов - в первом указаны верные даты, во втором - все даты - "Пустые" даты 1С
31 vasiliy_oren
 
17.05.21
14:33
То есть при получении дат из СУБД 1С получает пустые даты (не неправильные даты, ка при неверном смещении дат, а именно пустые).
Все остальные даты 1С получает верно
32 H A D G E H O G s
 
17.05.21
14:36
(27) Во времена когда есть многоядерные процессоры, кто то балуется балансировкой нагрузки.
33 fisher
 
17.05.21
14:41
(31) Любопытно. Любой простой запрос в консоли к любой таблице регистра или документов корректно отрабатывает отбор на период, но при этом отображает пустые даты?
34 fisher
 
17.05.21
14:44
(31) И что такое "все остальные даты"? А какие в 1С даты не из СУБД?
ТекущаяДата(), что ли?
35 Почему 1С
 
17.05.21
14:44
(32) Есть еще такое понятие как отказоустойчивость, сломался один и серверов кластера работает другой, только у 1С это не совсем так )
36 vasiliy_oren
 
17.05.21
14:47
(34) Да, сорри, неверно написал. Пустыми являются реквизиты с типом дата. Все остальные реквизиты (примитивные, ссылка, и т. д.) получаются в запросе идентично.
37 fisher
 
17.05.21
14:50
(36) А отбор по дате работает при этом корректно в запросе?
38 vasiliy_oren
 
17.05.21
14:56
Да. Запрос возвращает ровно столько строк, сколько периодов нужно взять, например из РН
39 fisher
 
17.05.21
15:02
Уникальная фигня. Никогда про такое не слышал. Первым делом я бы попробовал поставить на этот сервак того же сиквельного клиента, что и на основном сервере.
40 fisher
 
17.05.21
15:04
"mssql %мояверсиясиквела% native client download" или чего-то в этом духе
41 vasiliy_oren
 
17.05.21
15:06
Как раз это и делаю :)
Хотя возможно косяк именно в версии 11.0.2100.60
42 hhhh
 
17.05.21
17:21
может региональные настройки другие?
43 LoneBull
 
17.05.21
18:34
(0) в (40) дело говорит.
Новые базы использует datetime2, а старый клиент это нормально не поддерживает.
Это как бы должно диагностироваться и выдавать ошибку (а не мусор в данных), но не всегда работает.
44 mistеr
 
17.05.21
18:53
(36) А если

    ВЫБРАТЬ '20210517' Как МояДата
45 mistеr
 
17.05.21
18:53
(44) Или как там, не помню точно...
46 vasiliy_oren
 
18.05.21
06:14
Доброго времени суток.
fisher, все верно, установил Native Client и все заработало.
Спасибо огромное :)
Спасибо всем откликнувшимся :)
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn