MSSQL Error 615: Could not find database ID — Причины и решение
Ошибка 615 возникает при попытке ядра СУБД обратиться к контексту базы данных по ее внутреннему идентификатору (dbid), который отсутствует в системном каталоге sys.databases или был разрегистрирован во время выполнения активной транзакции.
- Приложение или кластер 1С:Предприятие падает с ошибкой:
Ошибка СУБД: Microsoft OLE DB Driver for SQL Server: Could not find database ID %d, name '%.*ls'(Severity 21, State 1). - Внезапный разрыв пользовательских сессий при выполнении тяжелых регламентных заданий.
- В журнале SQL Server ERRORLOG фиксируются сбои доступа к временным таблицам в
tempdbили к переименованным/удаленным базам. - Невозможность выполнить переключение контекста через команду
USE [db_name].
1. Проверка наличия и статуса базы данных в системном каталоге
SELECT
database_id,
name,
state_desc,
user_access_desc,
is_read_only,
create_date
FROM sys.databases
ORDER BY database_id;Если база данных находится в состоянии RECOVERY_PENDING, SUSPECT или OFFLINE, переведите ее в режим Online:
ALTER DATABASE [YourDatabaseName] SET ONLINE;2. Очистка устаревшего пула соединений (Connection Pooling)
Если база данных пересоздавалась, восстанавливалась из бэкапа под новым ID или удалялась, клиентские приложения (включая rphost в 1С:Предприятие) продолжают отправлять запросы со старым кэшированным ID базы:
-- Принудительный сброс процедурного кэша и планов для очистки устаревших контекстов
DBCC FREEPROCCACHE;
DBCC FREESYSTEMCACHE ('ALL');Перезапустите рабочие процессы кластера 1С (rphost) или выполните перезапуск службы 1C:Enterprise Server Agent.
3. Диагностика и сброс метаданных tempdb
Если ошибка ссылается на database_id = 2 (tempdb), причиной является сбой аллокации временных таблиц:
-- Проверка свободного места и файлов tempdb
USE tempdb;
GO
SELECT name, physical_name, size * 8 / 1024 AS SizeMB, max_size
FROM sys.database_files;
GO
-- Проверка целостности системных таблиц tempdb
DBCC CHECKALLOC ('tempdb');
DBCC CHECKCATALOG ('tempdb');4. Проверка целостности системных каталогов целевой БД
DBCC CHECKCATALOG ([YourDatabaseName]) WITH NO_INFOMSGS; Частые вопросы (FAQ)
Почему ошибка 615 имеет уровень серьезности Severity 21?
Уровень серьезности 21 (Severity 21) указывает на фатальную ошибку уровня ядра СУБД, которая приводит к немедленному аварийному разрыву клиентского соединения.
Почему 1С:Предприятие выдает ошибку 615 после восстановления тестовой копии базы?
Пул соединений кластера 1С кэширует внутренние дескрипторы базы данных. При пересоздании базы идентификатор database_id меняется, а зависшие процессы rphost продолжают адресоваться по старому идентификатору.
Что делать, если база данных пропала из sys.databases, но файлы MDF/LDF на месте?
Выполните примонтирование файлов с помощью T-SQL команды CREATE DATABASE [Имя] ON (FILENAME = 'путь_к_mdf'), (FILENAME = 'путь_к_ldf') FOR ATTACH.
Может ли ошибка 615 быть вызвана повреждением дисковой подсистемы?
Да, если повреждена системная база данных master и страницы системного каталога sys.sysdbreg не могут быть прочитаны с диска.