Короткий ответ

Если MSSQLSERVER на SQL01 не стартует, откройте ERRORLOG, не запускайте setup «Repair» первым. Типично: нет места на томе master/log, нет файлов master.mdf/mastlog.ldf, права учётки службы, порт занят, повреждение master. Пока экземпляр Down, 1С на SRV-1C бесполезна. Не переустанавливайте SQL поверх живых MDF Accounting.

Пути ERRORLOG: 2019 ...\MSSQL15.MSSQLSERVER\MSSQL\Log\ERRORLOG, 2022 ...\MSSQL16.MSSQLSERVER\MSSQL\Log.

Симптомы и как отличить

Типичная картина:

  • Start-Service MSSQLSERVER сразу Stop;
  • SCM: ошибка 1053/7;
  • клиенты 1С: сервер СУБД недоступен.

Отличия:

Служба Up, 1С нетНе эта статья
TCP 1433SQL недоступен, удалённо
Accounting Suspect, SQL Upsuspect

Возможные причины

  1. Диск C:/том ERRORLOG и master заполнен.
  2. Файлы master недоступны (диск, путь, антивирус).
  3. Учётка службы не читает каталог данных.
  4. Порт 1433 занят другим процессом (второй SQL).
  5. Неверные параметры запуска (-d -l -e).
  6. Повреждение master после crash.
  7. Неудачный патч CU, служба откатывается.

Диагностика

1. Служба и параметры

Get-Service MSSQLSERVER | Format-List *
Get-CimInstance Win32_Service -Filter "Name='MSSQLSERVER'" | Select-Object PathName, StartName, State

PathName содержит -d master, -l mastlog, -e ERRORLOG.

2. ERRORLOG хвост

Get-Content 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Log\ERRORLOG' -Tail 80
# для 2022 замените MSSQL16

Если файла нет — смотрите -e и Event Viewer System/Application (MSSQLSERVER).

3. Файлы master

-- недоступно, пока служба down: смотрите диск
Get-Item 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\master.mdf'
Get-Volume -FilePath 'C:\Program Files\Microsoft SQL Server'

4. Порт

Get-NetTCPConnection -LocalPort 1433 -ErrorAction SilentlyContinue

Решение

Сценарий A. Диск полный

Освободите том без удаления DATA. Логи IIS, старые ERRORLOG.n, .bak на C:. Затем старт.

Start-Service MSSQLSERVER

Сценарий B. Права учётки

StartName (например NT Service\MSSQLSERVER или доменная) должна иметь доступ на DATA, Log, Backup. Не переводите службу на Local System «навсегда» как костыль, если политика требует gMSA — почините ACL.

Сценарий C. Порт занят

Найдите PID. Второй экземпляр/антивирус/старый SQL Express. Верните 1433 default или остановите чужое.

Сценарий D. Master повреждён

  1. Копия всех файлов DATA.
  2. Восстановление master из backup master (если делали) по документации Microsoft: single-user -m, restore master.
  3. Если backup master нет — rebuild system databases как последний шаг по официальной процедуре вашей версии (2019 vs 2022), затем restore пользовательских баз. Это простой 1С на часы.

Сценарий E. Параметры запуска сбиты

SQL Server Configuration Manager → Startup Parameters. Должны указывать на реальные master/mastlog/ERRORLOG. Не копируйте пути с другого сервера.

Контур 1С: что происходит с кластером, пока SQL не стартует

ragent на SRV-1C может быть Running, клиенты получают ошибку СУБД, не «сервер 1С недоступен». Не рестартуйте кластер пачкой: это не лечит master. Сообщите пользователям, что простой на стороне SQL.

ERRORLOG читайте с хвоста после неудачного Start. Ищите Cannot recover the master database, FCB::Open failed, operating system error 32 (файл занят), 17113 (startup). Если видите повреждение Accounting, а master поднялся бы — служба могла стартовать с другими базами; но часто падение master валит весь экземпляр.

Параметры запуска в Configuration Manager легко сбить, копируя строку с SQL 2019 (MSSQL15) на хост 2022 (MSSQL16). Путь не существует — служба мгновенно Stop. Сверьте -d -l -e с фактическими каталогами.

Антивирус на master.mdf в момент старта — error 32/5. Исключения на DATA/LOG, не отключение Defender навсегда.

Если пришлось -m для restore master: подключайтесь вы одной сессией sqlcmd, не открывайте SSMS Object Explorer плюс 1С. Любой второй коннект займёт единственный слот. После restore master — убрать -m, старт нормально, проверить jobs Agent и логины. Затем 1С.

Не ставьте Express рядом как «временный SQL01» с тем же именем клиента: получите другой экземпляр и путаницу портов. Прод — MSSQLSERVER на 1433, точка.

Как проверить, что проблема устранена

Get-Service MSSQLSERVER, SQLSERVERAGENT
sqlcmd -S SQL01 -E -Q "SELECT @@VERSION; SELECT name, state_desc FROM sys.databases;"

Accounting ONLINE. 1С открывается. ERRORLOG без цикла restart.

Если не помогло

  • Цикл старт-стоп — читайте новый ERRORLOG после каждой попытки, не старый.
  • Cluster/FCI — смотрите роль кластера Windows, не только службу на одном узле.
  • После CU — известные блокеры в setup log %ProgramFiles%\Microsoft SQL Server\...\Setup Bootstrap\Log.

Профилактика

  • Мониторинг службы и места тома master.
  • Backup master/msdb периодически.
  • Не хранить пользовательские .bak на томе system databases.
  • Патч SQL в окно с rollback-планом CU.

Пока MSSQLSERVER не Running, не тратьте время на кэш клиентов 1С и на rac session. Зафиксируйте PathName службы, хвост ERRORLOG, свободное место тома DATA, ACL учётки службы. Если старт падает после CU, не ставьте второй CU поверх: читайте Setup Bootstrap Log, откатывайте по процедуре Microsoft. Копия файлов system databases до эксперимента с rebuild обязательна. Для совмещённого хоста с SRV-1C рестарт SQL валит всех; объявите простой. После успешного старта проверьте Accounting ONLINE, Agent, 1433 с SRV-1C, затем пускайте 1С. ERRORLOG.1 и старше тоже смотрите, если текущий файл короткий — причина могла быть в прошлой попытке Start.

Не путайте «служба не стартует» с «стартует и сразу останавливается после попытки восстановить Accounting». Во втором случае ERRORLOG уже пишет про пользовательскую базу, master жив. Тогда это suspect или нет места, а службу вы уже подняли. Смотрите, на каком файле остановился recovery. 1С не запускайте, пока Accounting не ONLINE. Agent можно поднять после SQL, backup не должен стартовать на recovering базе — иначе 3041 в истории job.

FAQ

1С при этом переустанавливать?

Нет.

Можно ли стартовать в -f / -m и пустить пользователей?

Нет. Single-user — для DBA. 1С не работает в этом режиме нормально.

ERRORLOG пустой.

Смотрите права на -e, полный диск, Event Log. Иногда служба не доходит до записи.

Express и MSSQLSERVER путаются.

Другое имя экземпляра (SQLEXPRESS). 1С должна смотреть в тот, где Accounting. Не чините Express, если прод — default.

После смены пароля доменной учётки службы.

Обновите пароль в SCM, старт. SPN не забудьте (SQL недоступен).