Проблема с SQL сервером. #311008


#0 by афаф
Приветствую! Возникла такая проблема, возможно, кто чего посоветовать сможет. 1С 8.0 (8.0.17.25) УПП 1.2 (1.2.1.37) крутится на двухпроцессорном сервере, под win2003 MS SQL2005. SQL и Сервер приложения 8 крутятся на одной физической машине. Раньше время от времени падал сервер приложения, при этом SQL продолжал работать, и после перезапуска сервера приложения работу можно было продолжать. Возникало это пару раз в месяц, и ладно, нормально к этому относились. Но в последние несколько дней это повторяется каждый день, а сегодня уже несколько раз за день.  В логах системы идет ругань на "xrange.cpp":399 Expression:     0 == pxteRangeHrow->m_pxteFetch(см ниже) и предлагается провести проверку базы на ошибки. Проверка проходит нормально – ошибок нет, а глюк есть. Ковыряние в  дампе, который SQL делал при падении дало непосредственный запрос, на котором обламывается база: exec sp_executesql N'SELECT TOP 48 _Document368_R._Date_Time _A1, CASE WHEN _Document368_R._Fld7707_TYPE = 0x08 AND _Document368_R._Fld7707_RTRef = 0x00000178 THEN CAST(_Document376._Number AS NVARCHAR) WHEN _Document368_R._Fld7707_TYPE = 0x08 AND _Document368_R._Fld7707_RTRef = 0x00000073 FROM _Document368 _Document368_R WITH(NOLOCK) LEFT OUTER JOIN _Reference64 WITH(NOLOCK) ON _Document368_R._Fld7693RRef = _Reference64._IDRRef LEFT OUTER JOIN _Reference80 WITH(NOLOCK) ON _Document368_R._Fld7698RRef = _Reference80._IDRRef LEFT OUTER JOIN _Reference115 WITH(NOLOCK) ON CASE WHEN _Document368_R._Fld7707_TYPE = 0x08 AND _Document368_R._Fld7707_RTRef = 0x00000073 THEN _Document368_R._Fld7707_RRRef WHEN _Document368_R._Fld7707_TYPE IS NULL OR _Document368_R._Fld7707_TYPE NOT IN (0x08) OR _Document368_R._Fld7707_RTRef IS NULL OR END = _Reference115._IDRRef LEFT OUTER JOIN _Document376 WITH(NOLOCK) ON CASE WHEN _Document368_R._Fld7707_TYPE = 0x08 AND _Document368_R._Fld7707_RTRef = 0x00000178 THEN _Document368_R._Fld7707_RRRef WHEN _Document368_R._Fld7707_TYPE IS NULL OR _Document368_R._Fld7707_TYPE NOT IN (0x08) OR _Document368_R._Fld7707_RTRef IS NULL OR END = _Document376._IDRRef LEFT OUTER JOIN _Reference10 WITH(NOLOCK) ON _Document368_R._Fld7687RRef = _Reference10._IDRRef LEFT OUTER JOIN _Reference94 WITH(NOLOCK) ON _Document368_R._Fld7699RRef = _Reference94._IDRRef WHERE _Document368_R._IDRRef > @P1 AND _Document368_R._Date_Time = @P2 AND _Document368_R._Fld7693RRef = @P3 AND _Document368_R._Fld7699RRef = @P4 AND _Document368_R._Date_Time >= @P5 AND _Document368_R._Date_Time <= @P2 OR _Document368_R._Date_Time > @P2 AND _Document368_R._Fld7693RRef = @P3 AND _Document368_R._Fld7699RRef = @P4 AND _Document368_R._Date_Time >= @P5 AND _Document368_R._Date_Time <= @P2 ORDER BY _Document368_R._Date_Time, _Document368_R._IDRRef', N'@P1 varbinary,@P2 datetime,@P3 varbinary,@P4 varbinary,@P5 datetime', 0x9F8C00034732BF0C11DCA3CE7737C641, {ts '2007-11-30 23:59:59'}, 0x8154001111410F6511DB2DE2B88919D0, 0xB60C00034732BF0C11DB7873077F50C4, {ts '2007-01-01 00:00:00'} Его выполнение в анализаторе запросов приводит к такой ошибке: Location:     "xrange.cpp":399 Expression:     0 == pxteRangeHrow->m_pxteFetch Process ID:     3264 Msg 3624, Level 20, State 1, Line 1 A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug or data corruption. To check for database corruption, consider running DBCC CHECKDB. If you agreed to send dumps to Microsoft during setup, a mini dump will be sent to Microsoft. An update might be available from Microsoft in the latest Service Pack or in a QFE from Technical Support. Msg 0, Level 20, State 0, Line 0 A severe error occurred on the current command.  The results, if any, should be discarded. Если изменить {ts '2007-11-30 23:59:59'},  {ts '2007-01-01 00:00:00'} на несколько секунд(23:59:58; 00:00:01), то запрос выполняется нормально – в ошибку не падает. Если после этого запрос выполнить еще раз, с (23:59:59; 00:00:00), то запрос к ошибке не приводит. Видимо берет данные из какого ни будь sql кэша. Вопрос, кто нибудь с таким сталкивался? Может у кого, кто хорошо знает SQL есть варианты, по решению? Заранее спасибо.
#1 by афаф
Эта таблица - документы ПоступлениеТоваровИУслуг. Решили проблему добавив реквизиту "Контрагент" индексацию с доп упорядочиванием. После рестуктуризации заработало вроде нормально. Ответ нашел здесь:
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям