Выполнение оператора kill не привело к ошибке субд 1с
Методика выявления длительной транзакции, которая привела к значительному расходу tempdb
К таким транзакциям стоит относиться подозрительно и стараться их не допускать.
Проблемы, к которым могут приводить длительные транзакции, в первую очередь связаны с избыточным потреблением каких-либо ресурсов: избыточные блокировки, избыточное потребление tempdb при работе с MS SQL Server.
Информацию по типичным причинам избыточных блокировок вы сможете найти в статье "Типичные причины избыточных блокировок и методы оптимизации".
В этой методике будет рассмотрена ещё одно достаточно неприятное проявление - избыточное потребление места в tempdb при работе с MS SQL Server.
Методика выявления длительной транзакции, которая привела к значительному расходу tempdb
1 - Зафиксировать значительное потребление tempdb
В целом объем свободного места можно оценить даже простейшим запросом
Для оперативной реакции на рост объема tempdb можно использовать "Инциденты и генерацию оповещений в ЦКК".
2 - Найти номер транзакции в MS SQL Server Management Studio
На этом шаге мы понимаем, что сейчас происходит значительное потребление места в tempdb.Для всех систем, работающих с использованием Технологической Платформы 1С в режиме совместимости с версией 8.3. (и старше) эффективно будет выполнение запроса:
Первые две колонки - номер сессии с СУБД и длительность транзакции.
Если длительность транзакции значительная, то транзакция, скорее всего, та, которую мы искали.
На практике редко бывает (может быть, у вас было по-другому?), что одновременно будет выполняться множество именно длительных транзакций, относящихся к различным операциям.
В этом запросе вы не получите объем места, использованный транзакцией, но по длительности транзакции (косвенный признак) получается идентифицировать виновника в 99% случаев.
Запоминаем номер session_id
Если проблема совсем критичная, а пользователи не могут больше работать, то нужно будет на СУБД выполнить kill 123 , где 123 - номер session_idНо это на совсем крайний случай. В этом случае в технологическом журнале будет зафиксировано исключение и событие EXCP. Такая ситуация, например, выглядит так (пример искусственный, но всё же)
В этом примере можно увидеть искомую транзакцию
Есть более "полный" запрос, который также позволит получить нужный номер транзакции, особенно, если система работает в режиме совместимости с 8.2.
Однако, приведенный ниже запрос может выполняться несколько десятков секунд (будьте к этому готовы): DECLARE @curr_date as DATETIME
Если вы не стали рисковать и отменять транзакцию (вдруг выполняется очень важная операция?), расследуем дальше.
3 - Находим код, выполнение которого привело к длительному выполнению в транзакции
Открываем консоль администрирования кластера серверов.
Переходим на закладку сеансы.
Нас интересуют две колонки:
- Соединение с СУБД
Запоминаем номер сеанса.
Обратите внимание, что session_id = Соединение с СУБД.
Опять же, если будет очень плохо, можно завершить сеанс.
В технологическом журнале это будет выглядеть так:
Но удаление сеанса - на крайний случай.
4 - Выясняем, что делает этот сеанс
Открываем журнал регистрации, отбираем по номеру сеанса , смотрим, что сеанс делает.
Если не понятно, что делает сеанс (а он ещё работает) быстро настраиваем технологический журнал по этому сеансу
Копировать в буфер обменаЗдесь 321 - это номер сеанса.
В технологическом журнале нас интересуют в первую очередь стеки на встроенном языке.
5 - Воспроизводим и разбираем проблему
Необходимо повторять где-то на копии ровно эту операцию.
На копии нас интересует запрос и его план, при выполнении которого потребовался большой объем данных в СУБД.
Возникает у всех пользователей.
Кеш, tempdb чистили. Полное тестирование и исправление делали. Выгрузка базы в файл .dt. Создание новой БД и загрузка из .dt была
Ошибка осталась, появляется с разной периодичностью.
При использовании платформы 8.3.6.2390 и версии Бухгалтерия 3.0.44.115 таких проблем не было
На этом же оборудовании используется ЗУП 2.5 (1С 8.2) и самописная конфигурации (1С 8.3) с большой нагрузкой проблем нет
По истечении недели использования, ничего страшного не вылезло? Каких-то новых ошибок? (101) Все нормально. Даже ошибку сохранения расширений исправили. Новых пока не выявил. (101)
(104)
Windows Server 2008 R2
SQL Server 2008 R2
Платформа 8.3.9.2170 ошибка замечена на УТ 10.3 (в режиме совместимости с 8.1) через 2 недели после обновления платформы. Замечена пока всего у 2-х пользователей. Стоит релиз уже неделю, полет нормальный, ошибок нет. Пользователи пожаловались, что базы стали медленней крутиться на платформе 8.3.9.2170 (до этого была 8.3.8.2054). Работают в БП 3.0. Не говорю что им не может казаться. У кого-нибудь производительность изменилась? Поставили новую платформу.
Появилась проблема. Теперь при запуске внешних обработок спрашивает о разрешении запуска внешней обработки. И об использовании внешних приложений, типа Excel (если он используется в этой обработке). И запоминает ответ. Особо одаренные пользователи, не читая, отвечают - нет.
И все, второго шанса не дает.
Печалька.:(
Кто знает, где хранятся эти настройки?
Чистка кэша не помогла. Платформа 8.3.9.1818. Ошибка появлялась только 2 раза. Помогала чистка серверного кэша. Сейчас опять вылезла, будем обновляться. (114) Подтверждаю. В бухии было 4-7 в день павдений . Самописка на УФ валилась каждые 15-30 минут. два месяца полёт нормальный. У меня на 1С:Предприятие 8.3 (8.3.9.1850) тоже вылетает спонтанно. И не у всех пользователей.
То же самое
8.3.10.2561, ERP 2.4, расширения, MS SQL 17
После первичного возникновения в процессе работы, начинает проявляется при входе в 1С
в техжурнале следующее:
После отключения регламентных заданий в 1С войти удалось (118) Похоже вы перезапустили SQL сервер, а 1С сервер продолжал работать в это время. Ошибка уйдет после перезапуска 1С сервера.
Поддерживаю, та же фигня.
Версии конфигурации, платформы и SQL такие же.
Другие базы работают нормально.
было что то похожее
Сегодня появилась с утра! Не у всех пользователей. Трое отписались с приложением скрина.
Первый раз за полгода вылез этот баг на 8.3.10.2466 + Native Client 11.0.Надеюсь, в 8.3.11 этого бага уже нет. Сегодня такая же ошибка в БИТ.ФИНАНС 3.1 (3.0.58.41/3.1.36.2/3.0.1.131).
Платформа 8.3.10.2580.
Тоже появилась с утра.
1С:Предприятие 8.3 (8.3.12.1440)
1С:Комплексная автоматизация 2 (2.4.3.160)
Ведомость на счета - увольнение
(126) Та же ерунда в БП 3.0 после обновления платформы. Похоже дело в ней1С:Предприятие 8.3 (8.3.12.1412)
Зарплата и кадры государственного учреждения, редакция 3.1 (3.1.6.54)
Выходит при попытке проведения вновь созданного кассового ордера.
После обновления платформы на версию 8.3.12.1469 ошибка SQL при проведении исчезла.перешли на платформу 1С:Предприятие 8.3 (8.3.12.1529)
на пятый день возникла ошибка у некоторых пользователей и в логах Фоновое задание. Ошибка выполнения:
Соединение с сервером баз данных непригодно для использования после разрыва соединения администратором и будет переустановлено.
Microsoft SQL Server Native Client 11.0: Запрос COMMIT TRANSACTION не имеет соответствующей инструкции BEGIN TRANSACTION.
HRESULT=80004005, SQLSrvr: SQLSTATE=25000, state=1, Severity=10, native=3902, line=1
Добрый день всем! Платформа 8.3.10.2567 клиент серверная версия 1с и sql на разных серверах у пользователей возникает ошибка Соединение с сервером баз данных непригодно для использования после разрыва соединения администратором и будет переустановлено. Подскажите в чем может быть дело?
: Ошибка при получении значения атрибута контекста (ТекущийПользователь)
Запрос.УстановитьПараметр("ТекущийПользователь", ПараметрыСеанса.ТекущийПользователь);
по причине:
Соединение с сервером баз данных непригодно для использования после разрыва соединения администратором и будет переустановлено.
Microsoft SQL Server Native Client 11.0: Запрос COMMIT TRANSACTION не имеет соответствующей инструкции BEGIN TRANSACTION.
HRESULT=80004005, SQLSrvr: SQLSTATE=25000, state=1, Severity=10, native=3902, line=1
Платформа 8.3.10.2505 (не меняли полгода), последних 3 дня периодически выскакивает ошибка:
Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm:по причине:
Соединение с сервером баз данных непригодно для использования после разрыва соединения администратором и будет переустановлено.
Microsoft SQL Server Native Client 11.0: Запрос COMMIT TRANSACTION не имеет соответствующей инструкции BEGIN TRANSACTION.
HRESULT=80004005, SQLSrvr: SQLSTATE=25000, state=1, Severity=10, native=3902, line=1
Нашлось решение этой проблемы или опять ждать милости 1С?
платформа 8.3.11.3034 , фоновые задания по выходным выбивают такую ошибку : Сеанс. Ошибка применения расширения конфигурации; Критичная: Уже существует объект с именем скИспользованиеРабочегоСтола.ШаблоныОграничений.скПоЗначениямУдалить . помогает перезапуск службы, но это не выход. режим совместимости 8.3.10Коллеги,
появилась такая же ошибка.
Microsoft SQL Server Native Client 11.0: Запрос COMMIT TRANSACTION не имеет соответствующей инструкции BEGIN TRANSACTION.
HRESULT=80004005, SQLSrvr: SQLSTATE=25000, state=1, Severity=10, native=3902, line=1
Платформа - 8.3.10
Конфа - Документооборот.
Всё работало полтора года исправно.
Мне помогло установка Драйвера "Драйвер Microsoft® ODBC 11 для SQL Server".
(установка вместе с "Собственный клиент Microsoft SQL Server 12").
При эсклуатации баз данных 1С вы можете сталкнуться с такой ситуацией:
Сеанс работы завершен администратором.
по причине:
Соединение с сервером баз данных разорвано администратором
Microsoft OLE DB Provider for SQL Server: Неопознанная ошибка
HRESULT=80004005
Признаки проблемы: нельзя выгрузить в dt
Внимание! Ошибок с кодом 80004005 уйма, более подробно классофикацию я описал здесь http://www.gilev.ru/1c/mssql/errsql.htm . Здесь же мы говорим именно о "неопознанной ошибке" :)
Сотрудники 1С рекомендуют решать проблему так:
Нюансы: обратите внимание, что "Стандартные проверки" платформой (chdbfl, в конфигураторе) упорно говорят, что с базой все ОК.
Также с этой ситуацией пересекается следующая ситуация:
Готов пояснить, фоновые задания сами по себе не зло, но регламентные процедуры
с полнотекстовым поиском - вещь в себе - и память она может через какое время
съедать ресурсы rphost.exe, что на другие операции не останеться, и просто
базу блокировать
т.е. другими словами, после первого шага уже можно проверять - возможно проблема "уйдет".
2. Перезапустить сервер
3) делаем бэкап средствами sql
Делать резервное копирование рекомендую при любых действиях, когда может потребоваться "возврат" к предыдущему состоянию данных
4) снимаем базу с поддержки, выгружаем cf
убиваем в менежмент консоли базе данных в таблице config запись более 120Мб, делаем "загрузить конфигурацию" (не объединение) убиваем в менежмент консоли базе данных в таблице config запись более 120Мб, делаем "загрузить конфигурацию" (не объединение)
вот пример работоспособности этого приема
DROP TABLE [dbo].[Config]
5) делаем "загрузить конфигурацию" (не объединение) из cf
после этого проверяем, проблема уходит.
P.S. Если у Вас есть возможность поделиться своим опытом, то давайте расширим данный материал.
Специальные предложения
Недавно возникла эта проблема
симтомы
1. Любое действие записи вызывает данную ошибку.
2. Не грузятся обмены
3. Невозможно запустить проверку БД и выгрузку
4. Невозможно открыть конфигуратор из-за блокировки информационной базы
Собственно никаких блокировок БД не было, проверялось и в консоли сервера приложений 1с и в консоли SQL сервера
Лечение.
1. делаем бэкап (на всякий пожарный, можно и не делать у кого смешанная модель бэкапа позволяющая восстановить базу на состояние часа назад к примеру )
2. сносим базу с сервера приложений(не трогая БД на SQL сервере)
и заводим её заново (можно наверно и перезагрузить сервер приложений 8.1,
но у меня на нем крутится более 20 баз, которые работали вполне адекватно)
итого починка занимает не более 5 минут(без бэкапа)
хотя вполне возможно у меня был частный случай. но есть у меня подозрение что гребет именно сервер приложений и сама БД тут совершенно ни причем
спасибо, интересный примерно если не запускалась проверка, то неплохобы было увидеть текст ошибки (собрать можно технологическим), тогда причина станет очевидней (3) ПОТРЯСАЮЩЕ! А статью вы пробывали читать или ваша рекомендация отличается от приведенных рекомендаций в статье? :) ИЛИ ВЫ ПОТВЕРЖДАЕТЕ ПРАВИЛЬНОСТЬ МЕТОДА? :) подтверждаю :) опытным путем было получено, что ошибочка вылетает
при некорректном закрытии программы пользователем (во время заполнения книги продаж в типовой бухне, например ) "Ну надоело ждать".
тока все таки лучшее перегрузить, чем сносить, если есть возможность. Был еще такой глюк с такой же ошибкой в итоге, один из пользователей ставил отбор по одному из сотрудников и вылетали все. пытались повторить на других машинах и другими пользователями, хрена. дальше все продолжают успешно работать, кроме как Невозможно запустить проверку БД и выгрузку. перегружаемси, индекируемси - те же грабли. У нас не выгружались ни cf ни dt. Оказалось, что после некорректного заверешения сервера предприятия остался висеть процесс rphost. Выяснилось это только через неделю (когда увидели что их больше чем надо :)))). Судя по всему старый процесс блокировал запись в таблице config Были такие грабли, поставил сервер 2008 с сиквел 2008, 3-й месяц все в норме У меня всегда лечится перезапуском Сервера 1С. Интересно в новой платформе 8.1.13.37 не решили эту проблему?!
что-то там колдуют с контролем двоичных данных в реквизитах на размер, надеемся на 14 релиз
Включив технологический журнал на время загрузки, можно определить таблицу, в которой содержатся такие хранилища. Найдите средствами MS SQL Server Query Analizer в этой таблице колонки типа image. Для каждой колонки типа image выполните запрос вида:
sel ect top 10 DATALENGTH(_Fld4044)
from _InfoReg4038
order by DATALENGTH(_Fld4044) desc
Он позволит узнать максимальные длины хранимых в них данных. Не рекомендуется хранить данные длиннее 100 - 200Mb.
Ошибка :"Соединение с сервером баз данных разорвано администратором
Microsoft OLE DB Provider for SQL Server: Неопознанная ошибка
HRESULT=80004005"
Имеем : 1C 8.1.13.41 УПП 1.2.19.21 на MS SQL 2005 SP3 на Win2003 Server Enterprise на компе 4Gb физ. памяти (SQL настроен на Max Memory 2Gb)
Решение в моем случае:
Виндовс по-умолчанию 2Гб берет себе, а 2 отдает нам. SQL почти всю остальную память поедал (в настройках стоит 2Gb) и оставлял для всех остальных только 128Мб физ. памяти(как и положено SQL- он не должен забирать ВСЁ, должен 128 оставить). Ошибка 1С начала проявляться после перехода на релиз 1.2.21.1. Да, действительно, в релизе 1.2.19.1 в файле dbo.Config не было записей больше 120Мб. А вот после обновления на 1.2.21.1 такая запись (примерно 135мб )появляется. При снятии с поддержки запись исчезает сама, и ничего удалять не приходится. При постановке на поддержку -снова появляется. Я так понял, что это и есть конфигурация поставщика.
Если SQL оставляет всего 128, а надо целых 135, то вывод- надо дать рабочим процессам живую физическую память. Moжно урезать SQL. А можно винды. Установив в boot.ini ключ /3GB я тем самым отдал виндам 1Gb, а всему остальному 3Gb, а не 2/2 как по умолчанию. После перезагрузки - все ОК.
Буду рад, если эти рекомендации помогут кому-нибудь еще :-)
Недавно у клиентов была такая проблема, просто отпала база с указанной ошибкой. MS SQL 2000 показывал базу не в состоянии Suspend, а в состоянии Offline. Понятно что наивный расчет на Online базы не оправдался и я устроил допрос.
В ходе следствия выяснилось что ничего страшного никто не делал (на самом деле) просто у части юзеров полезли избыточные блокировки, и сервер(физический) было решено перезагрузить.
После перезагрузки никто не смог войти, т.к. был Offline режим файлы базы скопировать тоже не удавалось, без меня делать детач боялись. Но так как мне ничего не оставалось я нажал детач. Сервер не много подумал и отключил базу но в списке баз отключенная база осталась не отобража имени, просто пустая строка, перезапуск сервера открылся с(!) подключенной живой базой. Но была проблема, беглый осмотр основных мест показал, что полностью упали итоги регистра Заказы покупателей( изб блокировки были связаны скорее всего с этим) в итоге пришлось их пересчитывать 2,5 часа не долго, но обычно за месяц итоги считались минут 15, значит точно упали.
КонецИстории )
з.ы. причин установить не удалось
Целый день бьюсь с этой проблемой. Пришлось потанцевать с бубном. УПП 1.2.27 Платформа 15. sql 2005. Ошибка решилась соблюдением следующей последовательности действий.1) удаляю записи больше 120 мб в sql.
2) Снимаю базу с поддержки
3)Объединяю с типовой cf 1.2.27 без галок (одновременно ставлю на поддержку) 1.2.27 предварительно протестирована и исправлена (не знаю важно ли это, но было именно так) Возникла аналогичная проблема "Соединение с сервером баз данных разорвано администратором Microsoft OLE DB Provider for SQL Server: Неопознанная ошибка
HRESULT=80004005" при выгрузке конфигурации из БП 1.6.24.7 на 1С 8.2, сервер SQL 2000. Вопрос решился добавлением рабочего процесса в консоли «Серверы 1С:Предприятия 8.2». Попробуйте. :) Тоже возникла проблема с основной конфигурацией в файловом варианте. Как посоветуете drop-нуть ConfigSave?
Ошибка: Сеанс работы завершен администратором.
по причине:
Соединение с сервером баз данных разорвано администратором
Microsoft OLE DB Provider for SQL Server: [DBNETLIB][ConnectionRead (recv()).]General network error. Check your network documentation.
HRESULT=80004005, SQLSrvr: Error state=1, Severity=10, native=11, line=0
1C 8.1.14 + MS SQl 2005 + Терминальник (на 3х серверах)
Ошибка возникает при любых действиях пользователя - хаотично ((( причин установить не удалось
(27) как ваша ошибка коррелирует с указанной в статье "Неопознанная ошибка"?У вас же проблема с большей вероятностью в включенном файрволе. (28) файрволов/антивирусов нет на сервере + Ошибка возникла без каких либо изменений в системе через год после експлуатации. (27) Vet_ne, Не подскажете как проблема решилась, у меня тоже HRESULT=80004005, SQLSrvr: Error state=1, Severity=10, native=11, line=0
бодаюсь пока безрезультатно.
вот выдержка из этой статьи (хоть и для 2000, но принцип тотже):
Устранение неполадок с установкой подключений
Большинство подобных неполадок в SQL Server 2000 возникает из-за проблем с протоколом TCP/IP или проверкой подлинности Windows либо сочетанием проблем обоих типов.
Внимание! Перед тем как приниматься за устранение неполадок с установкой подключений в SQL Server 2000, убедитесь, что на компьютере с SQL Server запущена служба MSSQLServer.
ping <Server Name>
Запишите возвращенный IP-адрес.
4. Из командной строки выполните следующую команду (где IP address — это IP-адрес, выписанный при выполнении действия 3):
ping –a <IP address>
Убедитесь, что команда возвращает правильное имя сервера. Если же одна из указанных выше команд завершается сбоем, возвращает неправильное значение или истекает время ожидания для ее выполнения, значит, неправильно работает просмотр DNS или существует иная проблема, связанная с функционированием сети или маршрутизацией. Чтобы просмотреть текущие параметры DNS, запустите из командной строки следующую команду:
Чтобы устранить эту проблему, добавьте запись для сервера в файл %systemroot%\system32\drivers\etc\hosts на клиентском компьютере. Кроме того, обойти проблему можно путем установки подключения к серверу с помощью сетевой библиотеки именованных каналов.
Примечание. Необходимо включить хотя бы протокол TCP/IP и именованные каналы.
3. Откройте вкладку Псевдоним и проверьте псевдонимы, настроенные для экземпляра SQL Server.
4. Убедитесь, что в свойствах псевдонимов правильно настроены имя сервера (IP-адрес) и протокол.
Можно создать новый псевдоним для тестирования подключения по имени сервера, IP-адресу или другому протоколу.
Примечание. В более ранних версиях компонентов доступа к данным Майкрософт (MDAC) интерфейс программы сетевого клиента отличается. Таким образом, если вы не видите описанных в этой статье элементов интерфейса, установите на клиентском компьютере более новую версию компонентов MDAC.
3. Также с этой ситуацией пересекается следующая ситуация:
10007066 Запись данных, содержащих колонки типа ХранилищеЗначения
Проблема:
При использовании СУБД MS SQL SERVER при записи объекта базы данных, содержащего несколько колонок типа ХранилищеЗначения, данные для которых получены из файлов, может происходить ошибка
Ошибка СУБД:Microsoft OLE DB Provider for SQL Server: String data length mismatchHRESULT=80004005и аварийное завершение работы программы.
Включив технологический журнал на время загрузки, можно определить таблицу, в которой содержатся такие хранилища. Найдите средствами MS SQL Server Query Analizer в этой таблице колонки типа image. Для каждой колонки типа image выполните запрос вида:
S_elect top 10 DATALENGTH(_Fld4044)
from _InfoReg4038
order by DATALENGTH(_Fld4044) desc
Нюансы: обратите внимание, что ”Стандартные проверки” платформой (chdbfl, в конфигураторе) упорно говорят, что с базой все ОК.
1С:Предприятие 8.2. Лицензия на сервер (x86-64)
По опыту проблема связана с хранением данных в реквизите хранилище значений либо наличием в таблице config двоичных данных БОЛЬШЕ 120 mb.
Обобщенные рекомендации, если рекомендации от 1С не помогли (проделать следующие действия в указанном порядке):
1. Выключить все фоновый задачи у всех баз
В 8.1.11 появился переключатель “запрет на фоновые задания” в
момент создания базы.
Готов пояснить, фоновые задания сами по себе не зло, но регламентные процедуры
с полнотекстовым поиском – вещь в себе – и память она может через какое время
съедать ресурсы rphost.exe, что на другие операции не останеться, и просто
базу блокировать
т.е. другими словами, после первого шага уже можно проверять – возможно проблема “уйдет”.
3) делаем бэкап средствами sql
Делать резервное копирование рекомендую при любых действиях, когда может потребоваться “возврат” к предыдущему состоянию данных
4) снимаем базу с поддержки, выгружаем cf
убиваем в менеджмент консоли базе данных в таблице config запись более 120Мб, делаем “загрузить конфигурацию” (не объединение) убиваем в менеджмент консоли базе данных в таблице config запись более 120Мб, делаем “загрузить конфигурацию” (не объединение)
1. Открыть конфигратор;
2. Снял конфигурацию с поддержки, ПРИ ЭТОМ КОНФИГУРАЦИЮ НЕ СОХРАНЯЛ!
3. Далее Сохранить конфигурацию в файл (не сохраняя измененной конфигурации);
4. В SQL для требуемой базы выполнил следующую команду:
DELETE FROM dbo.Config WHERE DataSize > 125829120
5. Загрузить сохраненную конфигурацию обратно.
можно попробовать и более радикальный шаг здесь:
удаляем (в менеджмент консоли) в базе данных таблицу “config”
D_rop TABLE [dbo].[Config]
5) делаем “загрузить конфигурацию” (не объединение) из cf
после этого проверяем, проблема уходит.
6) Ошибка :"Соединение с сервером баз данных разорвано администратором
Microsoft OLE DB Provider for SQL Server: Неопознанная ошибка
HRESULT=80004005"
Имеем : 1C 8.1.13.41 УПП 1.2.19.21 на MS SQL 2005 SP3 на Win2003 Server Enterprise на компе 4Gb физ. памяти (SQL настроен на Max Memory 2Gb)
Читайте также: