Имя: Пароль:
1C
 
Microsoft SQL Server Native Client 11.0: Недопустимое имя объекта "#tt2".
0 Alexman57
 
14.07.26
16:44
Здравствуйте. Платформа 8.3.27.1688. Клиент-серверная база. ЕРП 2.5.22.178. Сегодня возникла вот такая ошибка.

Ошибка СУБД:
Microsoft SQL Server Native Client 11.0: Недопустимое имя объекта "#tt2".
HRESULT=80040E37, SQLSrvr: SQLSTATE=42S02, state=1, Severity=10, native=208, line=1

{ОбщийМодуль.ДлительныеОперации.Модуль(962)}:ВызватьИсключение(Уточнение.Текст, Уточнение.Категория,, ДляАдминистратора, Результат.ИнформацияОбОшибке);
{Отчет.ОборотноСальдоваяВедомостьПоСчету.Форма.ФормаОтчета.Форма(1170)}:Возврат ДлительныеОперации.ЗаданиеВыполнено(ИдентификаторЗадания);
{Отчет.ОборотноСальдоваяВедомостьПоСчету.Форма.ФормаОтчета.Форма(1106)}:Если ЗаданиеВыполнено(ИдентификаторЗадания) Тогда

Ошибка выполнения фонового задания ДлительныеОперации.ВыполнитьСКонтекстомКлиента с идентификатором f5e7452b-7655-400f-be53-3f284d4fa1ca.
См. также журнал регистрации.
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка, ОшибкаКонфигурации]
по причине:
Ошибка СУБД:
Microsoft SQL Server Native Client 11.0: Недопустимое имя объекта "#tt2".
HRESULT=80040E37, SQLSrvr: SQLSTATE=42S02, state=1, Severity=10, native=208, line=1

Подскажите куда копать? Что делать?
1 craxx
 
14.07.26
16:48
(0) Платформу поменять в первую очередь
2 Волшебник
 
14.07.26
16:51
агент сервера перезагрузи
тут вот было такое:
Проблема решилась. Перезапуском сервера 1с. После этого вдруг стало всё работать.
БП 3.0 Перестала формироваться ОСВ и прочие отчеты
3 greenprog
 
15.07.26
19:56
(1) Не помогает, ну как не помогает , помогает только перезапуск сервера 1с - службы. Чз неделю снова, и так эта ошибка начиная наверное с 25 релиза так и мигрирует в другие релизы платформы.
4 H A D G E H O G s
 
15.07.26
20:50
(3) Эта ошибка уже отметила десятилетие, молодежь.
5 Волшебник
 
15.07.26
22:42
(3) сервер надо перезагружать еженочно
6 X Leshiy
 
15.07.26
23:27
(3) Скрипт перезагрузки сервера 1с, сервера субд, очистки кэша отрабатывает 5 - 20 минут (в зависимости от инфраструктуры).
Можно и раз в сутки запускать, если не 24/7 должно работать.

Как написал скрипт и поставил в шедулер, забыл подобные ошибки как страшный сон)
7 X Leshiy
 
16.07.26
10:30
@echo on
chcp 1251
SET SERVICE_1C_NAME="1C:Enterprise 8.3 Server Agent (x86-64)"
SET SQLSERVERAGENT="SQLSERVERAGENT"
SET MSSQLSERVER="MSSQLSERVER"
SET CNTX_PATH1C="\\1c\g$\srvinfo\reg_1541"
SET CNTX_1C="\\10.50.21.17"
SET CNTX_SQL="\\10.50.21.20"
SET CNTX_P="тут пароль"
SET CNTX_U="тут пользователь"
SET CNTX_PST="c:\PSTools\PsService64.exe"
%CNTX_PST% %CNTX_1C% -u %CNTX_U% -p %CNTX_P% stop %SERVICE_1C_NAME%
timeout 200
%CNTX_PST% %CNTX_SQL% -u %CNTX_U% -p %CNTX_P% stop %SQLSERVERAGENT%
timeout 10
%CNTX_PST% %CNTX_SQL% -u %CNTX_U% -p %CNTX_P% stop %MSSQLSERVER%
timeout 100
(for /d %%i in (%CNTX_PATH1C%\snccntx*) do rd /s /q %%i)
timeout 10
%CNTX_PST% %CNTX_SQL% -u %CNTX_U% -p %CNTX_P% start %MSSQLSERVER%
timeout 10
%CNTX_PST% %CNTX_SQL% -u %CNTX_U% -p %CNTX_P% start %SQLSERVERAGENT%
timeout 30
%CNTX_PST% %CNTX_1C% -u %CNTX_U% -p %CNTX_P% start %SERVICE_1C_NAME%
8 X Leshiy
 
15.07.26
23:29
Используется утилита из пакета PSTools
9 X Leshiy
 
15.07.26
23:31
Таймауты подбираешь по своим нуждам. Например, стоп скуль желательно чтобы подождал полного стопа всех рпхостов
10 ZloyBrawler
 
16.07.26
08:12
(0) Скуль и 1С сервер на одной машине или на разных?
Если на разных, то банально разрыв связи между серверами может к такому приводить
11 arsik
 
гуру
16.07.26
08:19
(7) Ужас
Вот вариант для powershell.
#requires -Version 5.1
#requires -RunAsAdministrator

[CmdletBinding()]
param()

# === КОНФИГУРАЦИЯ ===
$Config = @{
    LogDir       = "C:\log1C"
    LogBaseName  = "Restart-Services"
    StopTimeout  = 30  # Макс. время ожидания остановки одной службы (сек)
    StartTimeout = 30  # Макс. время ожидания запуска одной службы (сек)
    RetryCount   = 2   # Попыток повторного запуска при ошибке
}

$Config.LogFile = Join-Path $Config.LogDir "$($Config.LogBaseName).$(Get-Date -Format 'yyyy-MM').log"

# Создаём папку, если её нет
if (-not (Test-Path $Config.LogDir)) { New-Item -ItemType Directory -Path $Config.LogDir -Force | Out-Null }

# Функция логирования
function Write-Log {
    param([string]$Message, [ValidateSet("INFO","WARN","ERROR")]$Level = "INFO")
    $timestamp = Get-Date -Format 'dd.MM.yyyy HH:mm:ss'
    $entry = "[$timestamp] [$Level] $Message"
    Add-Content -Path $Config.LogFile -Value $entry -Encoding UTF8
    Write-Host $entry
}

# Функция ожидания изменения статуса службы
function Wait-ServiceState {
    param(
        [System.ServiceProcess.ServiceController]$Service,
        [string]$TargetState,
        [int]$TimeoutSec
    )
    $sw = [System.Diagnostics.Stopwatch]::StartNew()
    while ($Service.Status -ne $TargetState) {
        $Service.Refresh() # Быстрое обновление статуса без WMI/CIM-запросов
        if ($sw.Elapsed.TotalSeconds -ge $TimeoutSec) { return $false }
        Start-Sleep -Milliseconds 500
    }
    return $true
}

# === ПОДГОТОВКА ===
$ServiceDisplayNames = @(
    "Ras agent 1C",
    "Apache2.4",
    "1C:Enterprise 8.3 Configuration Repository Server",
    "1C:Enterprise 8.3 Server Agent (x86-64)",
    "SQLSERVERAGENT",
    "MSSQLSERVER"
)

Write-Log "Начало процесса перезапуска служб..."

# Кэшируем объекты служб (один вызов Get-Service на имя)
$Services = foreach ($name in $ServiceDisplayNames) {
    $svc = Get-Service -Name $name -ErrorAction SilentlyContinue
    if (-not $svc) { $svc = Get-Service -DisplayName $name -ErrorAction SilentlyContinue }

    if ($svc) {
        Write-Log "Найдена служба: '$name' → Системное имя: '$($svc.Name)'"
        $svc
    } else {
        Write-Log "Служба '$name' не найдена. Будет пропущена." "WARN"
    }
}

if ($Services.Count -eq 0) {
    Write-Log "Не найдено ни одной службы из списка. Завершение работы." "ERROR"
    exit 1
}

# === ФАЗА 1: ОСТАНОВКА (прямой порядок) ===
Write-Log "=== [ФАЗА 1] Остановка всех служб ==="
foreach ($svc in $Services) {
    try {
        $svc.Refresh()
        if ($svc.Status -ne 'Stopped') {
            Write-Log "Остановка '$($svc.Name)' (было: $($svc.Status))..."
            Stop-Service -InputObject $svc -ErrorAction Stop
            
            if (Wait-ServiceState -Service $svc -TargetState 'Stopped' -TimeoutSec $Config.StopTimeout) {
                Write-Log "'$($svc.Name)' успешно остановлена."
            } else {
                Write-Log "Таймаут ожидания остановки '$($svc.Name)'." "WARN"
            }
        } else {
            Write-Log "'$($svc.Name)' уже остановлена."
        }
    } catch {
        Write-Log "Ошибка остановки '$($svc.Name)': $_" "ERROR"
    }
}

Start-Sleep -Seconds 120

# === ФАЗА 2: ЗАПУСК (обратный порядок) ===
Write-Log "=== [ФАЗА 2] Запуск всех служб (в обратном порядке) ==="
# Итерируемся с конца массива без создания копий
for ($i = $Services.Count - 1; $i -ge 0; $i--) {
    $svc = $Services[$i]
    try {
        Write-Log "Запуск '$($svc.Name)'..."
        Start-Service -InputObject $svc -ErrorAction Stop
        
        if (Wait-ServiceState -Service $svc -TargetState 'Running' -TimeoutSec $Config.StartTimeout) {
            Write-Log "'$($svc.Name)' успешно запущена."
        } else {
            Write-Log "Таймаут ожидания запуска '$($svc.Name)'." "WARN"
        }
    } catch {
        Write-Log "Ошибка запуска '$($svc.Name)': $_" "ERROR"
    }
}

# === ФАЗА 3: ИТОГОВАЯ ПРОВЕРКА И РЕТРАЙ ===
Write-Log "=== [ФАЗА 3] Итоговая проверка состояния ==="
for ($i = $Services.Count - 1; $i -ge 0; $i--) {
    $svc = $Services[$i]
    $svc.Refresh()
    
    if ($svc.Status -ne 'Running') {
        Write-Log "'$($svc.Name)' не в статусе Running (текущий: $($svc.Status)). Попытка восстановления..." "WARN"
        $success = $false
        for ($r = 1; $r -le $Config.RetryCount -and -not $success; $r++) {
            try {
                Start-Service -InputObject $svc -ErrorAction Stop
                Start-Sleep -Seconds 3
                $svc.Refresh()
                if ($svc.Status -eq 'Running') {
                    $success = $true
                    Write-Log "'$($svc.Name)' восстановлена до Running (попытка $r/$($Config.RetryCount))."
                }
            } catch {
                Write-Log "Повторная попытка запуска '$($svc.Name)' ($r/$($Config.RetryCount)) не удалась: $_" "WARN"
            }
        }
        if (-not $success) {
            Write-Log "Не удалось запустить '$($svc.Name)' после $($Config.RetryCount) попыток." "ERROR"
        }
    } else {
        Write-Log "'$($svc.Name)' работает штатно."
    }
}

Write-Log "=== Перезапуск служб успешно завершён ==="
Write-Log ""
12 arsik
 
гуру
16.07.26
08:21
(11) Писал с помощью ИИ. Работает с месяц.
13 X Leshiy
 
16.07.26
10:27
(11) Это у тебя ужас) Говно нечитаемое)
14 X Leshiy
 
16.07.26
10:27
>>Писал с помощью ИИ. Работает с месяц.

Днище)
15 arsik
 
гуру
16.07.26
10:38
(13) Мне объектная нотация намного ближе чем дос бейсик.
16 X Leshiy
 
16.07.26
12:53
(15) У меня работает. У тебя тоже? Поздравляю. Мнение оставь при себе.
17 oleg_km
 
16.07.26
14:51
(16) Таймауты на остановке служб - очень опасное решение
18 X Leshiy
 
16.07.26
15:02
(17) Я не настоящий сварщик, но если в (11) скрипт ТОЧНО определяет, что все службы стопнулись (например ВСЕ рпхосты) перед следующим шагом, то респект и уважуха, пользуйте его.