Я получаю следующую ошибку при попытке создать кластерный индекс
Заявление было прекращено.
Сообщение 596, уровень 21, состояние 1, строка 0
Не удается продолжить выполнение, поскольку сеанс находится в состоянии уничтожения.Сообщение 0, уровень 20, состояние 0, строка 0
Произошла серьезная ошибка в текущей команде. Результаты, если таковые имеются, должны быть отброшены.
Индекс:
BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
GO
CREATE CLUSTERED INDEX IX_CO_DES_INPUT
ON dbo.CO_DES_INPUT(DESIGN_ID, PRODUCT_INPUT_NUM, INPUT_NAME)
WITH(STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
ALTER TABLE dbo.CO_DES_INPUT
SET (LOCK_ESCALATION = TABLE)
GO
COMMIT
Я использую Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64) Standard Edition (64-разрядная версия) в Windows NT 6.3 (сборка 9600:)
Я бегал
DBCC CheckDB ('concept-test') WITH NO_INFOMSGS, ALL_ERRORMSGS
и это не нашло проблем
Я боюсь, что моя база данных повреждена, так как я получаю эту ошибку. Как мне исправить мою проблему и получить этот индекс на стол?
sql-server
sql-server-2012
user2904235
источник
источник
Ответы:
Просто указатель на: SQL Server 2017 (где я сталкивался с этой ошибкой) и некоторые версии 2016 года, чтобы потенциально сэкономить другим время:
До выпуска SQL Server 2017 CU8 (также 2016 SP1 CU9 и 2016 SP2 CU1) существовала проблема, при которой многораздельные таблицы с инкрементной статистикой генерировали эту ошибку, если операция DML вызывала автоматическое обновление статистики.
Минимальная КБ страница находится здесь:
https://support.microsoft.com/en-us/help/4163478/fix-access-violation-when-incremental-statistics-automatically-updated
Установка более позднего CU, чем перечисленные выше, устраняет проблему.
источник
Это может быть вызвано повреждением индекса,
Лучший способ справиться с этим - удалить старый индекс, который поврежден.
И чем запускать запрос в вопросах, он должен работать нормально, если все записи уникальны. в данных столбцах.
источник
В базе данных, настроенной на группы «Всегда в наличии», вы также можете столкнуться с таким поведением, если группа доступности находится в режиме SYNCHRONOUS, а вторичные устройства отключены или приостановлены. Это побочный эффект, испытываемый серверами приложений. Спасибо,
источник
Что-то, что я невольно обнаружил: когда вы отключаете / перестраиваете индексы в индексированном представлении, вы получите ту же ошибку, если попытаетесь перестроить один или несколько некластеризованных индексов до построения кластеризованного или использовать REBUILD ALL.
источник
Я всегда получаю эту ошибку, когда у меня есть работающий запрос, использующий прослушиватель Always On AG, использующий одну из баз данных AG, и происходит аварийное переключение:
Поставщик данных .Net SqlClient: Сообщение 596, уровень 21, состояние 1, строка 0 Не удается продолжить выполнение, поскольку сеанс находится в состоянии уничтожения. Поставщик данных .Net SqlClient: Сообщение 0, уровень 20, состояние 0, строка 0 Произошла серьезная ошибка в текущей команде. Результаты, если таковые имеются, должны быть отброшены.
Очень легко воспроизвести! Конечно, могут быть и другие причины, но это один конкретный случай, когда я получаю этот тип ошибки ...
источник
Я могу воспроизвести эту проблему в довольно небольшой программе на C #, которая использует асинхронные соединения, но я не уверен на 100%, почему. Вот моя программа репро на тот случай, если другие захотят попробовать - я подозреваю, что есть ряд вещей, которые должны выстроиться идеально, чтобы это произошло:
источник