J'obtiens l'erreur suivante en essayant de créer un index clusterisé
La déclaration est terminée.
Msg 596, niveau 21, état 1, ligne 0
Impossible de poursuivre l'exécution car la session est en état d'arrêt.Msg 0, niveau 20, état 0, ligne 0
Une erreur grave s'est produite sur la commande actuelle. Le cas échéant, les résultats doivent être ignorés.
L'index est:
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
J'utilise Microsoft SQL Server 2012 (SP3) (KB3072779) - 11.0.6020.0 (X64) Standard Edition (64 bits) sur Windows NT 6.3 (Build 9600:)
j'ai couru
DBCC CheckDB ('concept-test') WITH NO_INFOMSGS, ALL_ERRORMSGS
et il n'a trouvé aucun problème
J'ai peur que ma base de données soit corrompue car j'obtiens cette erreur. Comment puis-je corriger mon problème et mettre cet index sur la table?
sql-server
sql-server-2012
user2904235
la source
la source
Réponses:
Juste un pointeur sur: SQL Server 2017 (où je frappais cette erreur) et certaines versions de 2016 pour potentiellement gagner du temps aux autres:
Avant SQL Server 2017 CU8 (également 2016 SP1 CU9 et 2016 SP2 CU1), il y avait un problème où les tables partitionnées avec des statistiques incrémentielles généraient cette erreur si l'opération DML provoquait une mise à jour automatique des statistiques.
La page KB minimale est ici:
https://support.microsoft.com/en-us/help/4163478/fix-access-violation-when-incremental-statistics-automatically-updated
L'installation d'une CU plus récente que celles répertoriées ci-dessus résout le problème.
la source
Cela peut être causé par la corruption d'index,
La meilleure façon de gérer cela est de supprimer l'ancien index qui est corrompu.
Et que Exécuter la requête en questions, cela devrait fonctionner correctement si tous les enregistrements sont uniques. dans les colonnes données.
la source
Dans une base de données configurée pour les groupes de disponibilité Always On, vous pouvez également rencontrer ce problème si le groupe de disponibilité est en mode SYNCHRONE et que les secondaires sont hors ligne ou suspendus. Il s'agit d'un effet secondaire rencontré par les serveurs d'applications. Merci,
la source
Quelque chose que j'ai involontairement trouvé: lorsque vous désactivez / reconstruisez des index sur une vue indexée, vous obtiendrez cette même erreur si vous essayez de reconstruire un ou plusieurs index non cluster avant de construire le cluster ou d'utiliser RECONSTRUIRE TOUT.
la source
J'obtiens toujours cette erreur lorsque j'ai une requête en cours, à l'aide d'un écouteur Always On AG, à l'aide de l'une des bases de données AG et qu'il y a un basculement:
Fournisseur de données .Net SqlClient: Msg 596, niveau 21, état 1, ligne 0 Impossible de poursuivre l'exécution car la session est en état d'arrêt. Fournisseur de données .Net SqlClient: Msg 0, niveau 20, état 0, ligne 0 Une erreur grave s'est produite sur la commande actuelle. Le cas échéant, les résultats doivent être ignorés.
Très facile à reproduire! Bien sûr, il peut y avoir d'autres raisons, mais c'est le cas particulier où j'obtiens ce type d'erreur ...
la source
Je peux reproduire ce problème dans un programme C # assez petit qui utilise des connexions asynchrones, mais je ne suis pas sûr à 100% pourquoi. Voici mon programme de repro au cas où d'autres voudraient l'essayer - je soupçonne qu'il y a une série de choses qui doivent s'aligner parfaitement pour que cela se produise:
la source