На днях дали базу 1С:ERP на анализ. Симптомы - все тормозит. Открытие конфигуратора (примерно 1,5 часа), клиента, переходы по навигационным ссылкам - все. Остальные базы в кластере работают нормально, в том числе и другая ERP, а с этой непонятная беда. Чистка кэша, тестирование/исправление, DBCC CHECKDB, разворачивание из SQL бэкапа в чистую базу, выгрузка/загрузка .dt, пересоздание базы в кластере, какие-то еще шаманства - ничего не помогает. Ок, развернул базу, решил посмотреть в SQL Profiler, какие запросы выполняются при запуске базы. Внимание привлекло следующее поведение. После каждого служебного запроса к таблице Config
execsp_executesql N'SELECT Creation,Modified,Attributes,DataSize,BinaryData FROM Config WHERE FileName = @P1 ORDER BY PartNo',N'@P1 nvarchar(128)',N'086d69d6-e2fa-45cb-84b6-f8f3e2919160'
дополнительно выполняется
execsp_executesql N'SELECT FileName,Creation,Modified,Attributes,DataSize FROM Config WHERE PartNo = 0 and FileName LIKE @P1',N'@P1 nvarchar(128)',N'_____________________________________dynupdate_%'
Проверка на нормально работающей базе показала отсутствие запросов с таким параметром. То есть можно предположить, что процесс динамического обновления конфигурации некорректно отработал и где-то в базе записана информация, наличие которой приводит к появлению этих дополнительных запросов. Ближе к началу трассировки были обнаружены следующие строки, из контекста которых можно предположить,что они как-то связаны с динамическим обновлением:
execsp_executesql N'SELECT Creation,Modified,Attributes,DataSize,BinaryData FROM Params WHERE FileName = @P1 ORDER BY PartNo',N'@P1 nvarchar(128)',N'DynamicallyUpdated'
execsp_executesql N'SELECT FileName,Creation,Modified,Attributes,DataSize FROM Config WHERE PartNo = 0 and FileName = @P1',N'@P1 nvarchar(128)',N'DynamicallyUpdated'
Выполнение этих запросов в эталонной базе показало отсутствие подходящих записей, в проблемной базе было выявлено наличие данных.
Select*FROM Config WHERE FileName like 'DynamicallyUpdated'; Select*FROM Params WHERE FileName like 'DynamicallyUpdated';
Далее в проблемной базе было выполнен скрипт:
DeleteFROM Config WHERE FileName like 'DynamicallyUpdated'; DeleteFROM Params WHERE FileName like 'DynamicallyUpdated';