Я получаю следующее SqlException
при вызове хранимой процедуры:
Попытка получить логическую страницу (5: 65424) в базе данных 2 не удалась. Он принадлежит единице распределения 7349876362857938944, а не 4899918190390149120.
System.Data.SqlClient.SqlException произошла ошибка
Message = "Попытка извлечь логическую страницу (5: 65424) в базе данных 2. Она принадлежит блоку выделения 7349876362857938944, а не 4899918190390149120.Источник = ". Поставщик данных Net SqlClient"
ErrorCode = -2146232060
Класс = 21
LineNumber = 257
Номер = 605
Процедура = "ispDisplayCount"
Сервер = "10.10.1.1"
Состояние = 3
Что означает это исключение? Есть ли решение по вышеуказанному вопросу?
Хотя база данных, на которую ссылается вышеупомянутая ошибка, указывает на базу данных tempdb, аналогичные ошибки, ссылающиеся на Сообщение 605, могут быть исправлены с помощью ответов ниже.
Сообщение 605, уровень 21, состояние 3, строка 1
Попытка извлечь логическую страницу (1: 8687634) в базе данных 7 не удалась. Он принадлежит блоку распределения 72057594364821504, а не 72057594052476928.
источник
Я смог решить эту проблему путем очистки кэшей SQL:
Очевидно, перезапуск службы SQL имел бы такой же эффект.
(через Made By SQL , воспроизведенный здесь, чтобы помочь другим!)
источник
Скорее всего, данные внутри таблиц были повреждены.
источник
Многие люди слышат, что « база данных повреждена, вам нужно восстановить », даже не рекомендуя потратить несколько минут на выполнение некоторых из следующих действий; просмотрите ваши журналы, выясните, когда проблема возникла впервые, ошибка, которая предшествовала этой строке, проверьте базу данных / таблицу, к которой принадлежит страница.
В моем случае этой ошибке предшествовал;
Обходной путь должен был отследить упомянутый индекс и временно удалить его.
позже я нашел эту ссылку Microsoft, которая описывает мою точную проблему и предлагает ссылку для решения
надеюсь, что это поможет кому-то еще в будущем
источник