Размер временных таблиц «1С» в Postgres

select relnamespace, sum(relpages::bigint*8192), pg_size_pretty(sum(relpages::bigint*8192))
from pg_class where relname like 'tt%' group by 1 order by 2 desc;
select sum(relpages::bigint*8192), pg_size_pretty(sum(relpages::bigint*8192)) from pg_class where relname like 'tt%';

recv returns zero 1С

Сообщения типа

37:35.447041-0,EXCP,1,process=rphost,ClientID=69,Exception=NetDataExchangeException,Descr=’server_addr=(23)[fe80::3470:d26:72ff:4e48%14]:56342 descr=recv returns zero, disconnected line=2291 file=Src\DataExchangeServerImpl.cpp’
37:35.447042-0,EXCPCNTX,0,ClientComputerName=,ServerComputerName=,UserName=,ConnectString=

Ответ фирмы 1С расположен по адресу https://partners.v8.1c.ru/forum/topic/1198922

Снимок1849

Could not continue scan with NOLOCK due to data movement

Что говорит производитель MS SQL Server:

http://msdn.microsoft.com/ru-ru/library/bb326281.aspx
SQL Server Database Engine не удается продолжить выполнение запроса, поскольку приложение пытается считать данные, обновленные или удаленные другой транзакцией. Очередь использует подсказку блокировки NOLOCK или
уровень изоляции транзакции READ UNCOMMITTED.
Как правило, доступ к данным, которые изменяются другой операцией, запрещен из-за наложенной на них блокировки.
Однако подсказка блокировки NOLOCK и уровень изоляции транзакции READ UNCOMMITTED позволили запросу считать данные, заблокированные другой транзакцией. Это называется «грязным» чтением, поскольку таким образом можно считать значения, которые еще не были зафиксированы и могут быть изменены.
Эта ошибка отменяет запрос. Отправьте запрос повторно или удалите подсказку блокировки NOLOCK.

Есть небольшая вероятность того, что дело в конфигурации.

Пример на скриншоте.

Could not continue scan with NOLOCK due to data movement

Но здесь есть ключевое НО: Обратите внимание, что речь идет о конфликте блокировок и запрос на чтение вне тразнакции.

Если конфигурация в автоматическом режиме блокировок, то платформа использует другой уровень изоляции, который не может привести к такой ситуации.

В ОСТАЛЬНЫХ СЛУЧАЯХ, применительно к 1С:Предприятие скорее дело не в этом.

Проблемы с диском!!! Ошибка появляется при разрушении данных.

Проверьте БД  с помощью DBCC CHECKDB. Обязательно сделайте резервную копию!

Попытайтесь с помощью все той же DBCC CHECKDB восстановить данные (если жесткий диск «не умирает»).

ALTER DATABASE [Ваша база] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO

DBCC CHECKDB ([Ваша база],REPAIR_ALLOW_DATA_LOSS)
GO

ALTER DATABASE [Ваша база]SET MULTI_USER WITH ROLLBACK IMMEDIATE
GO

Если повреждения несерьезные, то все будет хорошо. Если нет, то используйте бэкапы.

 

Или это ошибка платформы

Такое уже было раньше

http://downloads.v8.1c.ru/content/Comm/Platform/Err_8_2_9_356.htm

10036291  Ошибка СУБД: Microsoft OLE DB Provider for SQL Server: Could not continue scan with NOLOCK due to data movement.

Проблема:
В клиент-серверном варианте информационной базы с использованием MS SQL Server при возникновении ошибки

Ошибка СУБД:
Microsoft OLE DB Provider for SQL Server: Could not continue scan with NOLOCK due to data movement.
HRESULT=80040E14, SQLSrvr: Error state=3, Severity=C, native=601, line=1

происходит аварийное завершение работы программы.
Дата публикации: 2009-11-16

На момент написания статьи такой ошибки не было зарегистрировано, но это не 100% гарантия.

Есть смысл при возникновении проблемы обратиться на v8@1c.ru

1с через веб сервис Server Error in ‘/’ Application

автор: Александр Шарафан
При работе в управляемом приложении через веб сервис пользователь иногда получает сообщение:
Server Error in ‘/’ Application
ошибка веб сервиса 1с
С совершенно не вразумительным текстом описания ошибки и рекомендацией как поступить при этом.
Как решать указанную проблему?
Разделим саму проблему на две части:
Проблема Веб сервиса и проблема 1С.
Проблему 1С можно обнаружить и устранить, если запустить режим отладки Тонкого клиента и проверить работу управляемых форм, ответственных за место в котором происходит ошибка.
Здесь мы будем рассматривать половину относящуюся к Веб серверу.
В некоторых источниках пишут что указанная ошибка является характерной для хакерских атак, но в нашем конкретном случае о такой атаке речь идти не может, т.к. проблема возникает при обращении к сервису не из вне сети, а из интранет.
В переводе на русский язык ошибка звучит как: «Ошибка приложения вызванная на сервере. Текущие настройки сервера для этого приложения ошибочны, приложение было остановлено по соображениям безопасности в привентивном режиме.»
Рекомендация данная ниже отключает режим вывода сообщений, но не дает ответа как устранить причину появления ошибки, при условии правильности работы кода 1С во всех других режимах.
немного манипуляций и страница дает уже более понятную информацию:
image (1)
Если ранее проблема была не понятна, то сейчас более понятно что ошибка относится именно к веб серверу и что вызывается именно привентивным прекращением работы приложения веб сервером.
Проблема же заключается в том, что .net имеет режим валидации исполняемого сервером кода, вот эта валидация и приводит к появлению указанной ошибки.
Для устранения ошибки рекомендуется выполнить настройки вебсервера:

1. ValidateRequest = «False»

например,если в конфигурационном файле у вас уже есть:
<% @ Page Language = «VB» AutoEventWireup = «False» Codebehind = «MyForm.aspx.vb» наследует = «Proj.MyForm»%>

то должно стать:

<% @ Page Language = "VB" AutoEventWireup = "False" Codebehind = "MyForm.aspx.vb" наследует = "Proj.MyForm" ValidateRequest = "False"%>

В более поздних версиях Visual Studio значение этого свойства можно получить на странице свойств, поэтому просто установите » ValidateRequest » на » False«. Любым способом установки можно получить тот же результат.

Примечание:

1.1. Если вы используете. NET 4, то вам необходимо добавить requestValidationMode = «2.0» в HttpRuntime раздел конфигурацииweb.config файла. Например:

<httpRuntime requestValidationMode=»2.0″/>

Если у вас еще нет раздела HttpRuntime в web.config, то это можно сделать такие настройки в разделе <system.web>.

      Чтобы глобально выключить проверку запросов добавьте следующую строку в вашем web.config файла: <pages validateRequest=»false» /> раздела <system.web>.
2. Установить  EnableEventValidation = «False» запретим проверку корректности события.
3. Установить EnableViewState = "False"
и
4. Установить нужное значение в ExecutionTimeout. В моем случае строка выглядит так: ExecutionTimeOut = «20»
 
Это верно для: NET 1.1,. NET 2,. NET 3.5 и. NET 4.0
Использованы материалы интернет форумов и сайтов:
автор Александр Шарафан

Как включить отладку на сервере 1С

Если требуется включить отладку на сервере 1С 8.2, необходимо проделать следующее:

— запустить редактор реестра
regedit
— открыть в нём раздел
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\1C:Enterprise 8.2 Server Agent
— найти параметр
ImagePath
— изменить его, добавив параметр -debug .
Например, было:

«C:\Program Files (x86)\1cv82\8.2.17.169\bin\ragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «C:\Program Files (x86)\1cv82\srvinfo»

стало:

«C:\Program Files (x86)\1cv82\8.2.17.169\bin\ragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug -d «C:\Program Files (x86)\1cv82\srvinfo»

— перезапустить службу 1C:Enterprise 8.2 Server Agent.

Для сервера 1С 8.1 всё делается точно так же, изменения только в названии служб и пути к файлу запуска ragent.

Сервер как «демон» ОС Linux

Если в отладочный режим необходимо перевести сервер «1С:Предприятия» работающего в режиме «демона» в ОС Linux, то необходимо выполнить следующие операции:

1. Остановить сервер «1С:Предприятия».

/etc/init.d/srv1cv83 stop

2. В конфигурационном файле srv1cv83 установить значение параметра SRV1CV8_DEBUG в значение 1.

SRV1CV8_DEBUG=1

3. Сохранить конфигурационный файл.

4. Запустить сервер «1С:Предприятия».

/etc/init.d/srv1cv83 start

Примечание.  Для RPM-системы нужно править не скрипт (/etc/init.d/srv1cv83), а конфигурационный файл, который находится тут /etc/sysconfig/srv1cv83