PRB : Erreur « INSERT a échoué » lorsque vous mettez à jour la Table référencée dans une vue indexée

Symptômes

Lorsque vous exécutez une procédure stockée ou SQL instruction INSERT directement, qui tente d’insérer une ligne dans une table qui est référencée dans une vue indexée, l’erreur suivante peut se produire :

INSERT a échoué car les options SET suivantes comportent des paramètres incorrects : « ARITHABORT »
En outre, cette erreur peut se produire même si « SET ARITHABORT ON » est inclus dans le lot ou une procédure stockée qui tente d’insérer.

Cause

Pour réussir l’insertion d’une ligne dans une table qui est référencée dans une vue indexée, le paramètre de configuration de SQL ARITHABORT doit être défini à ON. En outre, l’instruction qui s’applique à ce paramètre de configuration doit être exécutée dans son propre lot. Procédures stockées contenant un seul lot, l’ajout de l’instruction de la procédure ne fonctionne pas.

Résolution

Pour résoudre ce problème, ajoutez le code ADO suivant à votre application une fois que vous ouvrez la connexion à votre base de données :
MyConnection.Execute "SET ARITHABORT ON"
MaConnexion est une référence à l’objet de connexion ADO que vous utilisez pour exécuter la procédure stockée qui exécute une instruction INSERT ou l’instruction SQL INSERT.

État

Ce comportement est voulu par la conception.

Plus d'informations

SET ARITHABORT ON est une des options qui n’est pas automatiquement définie pour les connexions qui utilisent le fournisseur OLE DB pour SQL Server ou le pilote ODBC de SQL Server. Étant donné que les connexions OLE DB et ODBC ne spécifient pas un paramètre ARITHABORT, d’une valeur par défaut de connexions serveur par défaut, occurrence ARITHABORT OFF.

Références

Pour plus d’informations, consultez les rubriques « Conception d’une vue indexée » et « Création d’un Index » dans la documentation en ligne de SQL Server 2000.
Propriétés

ID d'article : 305333 - Dernière mise à jour : 27 janv. 2017 - Révision : 1

Commentaires