Vous pouvez recevoir un message d’erreur lorsque vous essayez d’utiliser SQL Server Management Studio pour mettre à jour une ligne d’une table dans SQL Server

Cet article vous aide à résoudre le problème qui se produit lorsque vous essayez de mettre à jour une table à l’aide de SQL Server Management Studio dans SQL Server.

Version du produit d’origine : SQL Server
Numéro de la base de connaissances d’origine : 925719

Symptômes

Prenons le cas de figure suivant. Vous essayez d’utiliser SQL Server Management Studio pour mettre à jour une table dans Microsoft SQL Server. Dans Explorateur d'objets, cliquez avec le bouton droit sur le nom de la table, puis cliquez sur Ouvrir la table. Vous mettez à jour une ligne de la table. Dans ce scénario, vous pouvez recevoir l’un des messages d’erreur suivants de manière inattendue dans la boîte de dialogue Microsoft SQL Server Management Studio :

  • Message d’erreur 1

    Les données ont changé depuis la dernière récupération du volet Résultats. Voulez-vous enregistrer vos modifications maintenant ?

    (Erreur de contrôle d’accès concurrentiel optimiste)

    Cliquez sur Oui pour valider vos modifications apportées à la base de données.

    Cliquez sur Non pour ignorer votre modification et récupérer les données actuelles de cette ligne.

    Cliquez sur Annuler pour continuer la modification.

    Remarque

    Si vous cliquez sur Oui dans la boîte de dialogue de ce message d’erreur, la ligne est mise à jour correctement.

  • Message d’erreur 2

    Aucune ligne n’a été mise à jour.

    Les données de la ligne X n’ont pas été validées.

    Source d’erreur : Microsoft.VisualStudio.DataTools.

    Message d’erreur : la ou les valeurs de ligne mises à jour ou supprimées ne rendent pas la ligne unique ou modifient plusieurs lignes (N lignes).

    Corrigez les erreurs et réessayez ou appuyez sur Échap pour annuler la ou les modifications.

    Remarque

    Si vous recevez cette boîte de dialogue de message, vous ne pouvez pas mettre à jour la ligne.

Ce problème se produit si les conditions suivantes sont remplies :

  • La table contient une ou plusieurs colonnes du type de données text ou ntext.

  • La valeur de l’une de ces colonnes contient les caractères suivants :

    • Signe de pourcentage (%)
    • Trait de soulignement (_)
    • Crochet gauche ([)
  • La table ne contient pas de clé primaire.

Remarque

Ce problème se produit également lorsque vous essayez d’utiliser table Designer dans Microsoft Visual Studio pour mettre à jour une table qui se trouve dans une base de données SQL Server.

Cause

Ce problème se produit car SQL Server Management Studio génère une instruction SQL incorrecte pour l’opération de mise à jour. Lorsque la table ne contient pas de clé primaire, les valeurs de toutes les colonnes sont utilisées pour identifier la ligne à mettre à jour. Lorsque SQL Server Management Studio construit cette instruction, l’opérateur de comparaison incorrect (=) est utilisé pour comparer les colonnes des types de données text, ntext ou image.

Solution de contournement

Pour contourner ce problème, créez une fenêtre de requête dans SQL Server Management Studio. Ensuite, exécutez une instruction SQL UPDATE pour mettre à jour la ligne dans la table.

Remarque

Si vous recevez le premier message d’erreur mentionné dans la section Symptômes , vous pouvez cliquer sur Oui pour mettre à jour la ligne.

References

UPDATE (Transact-SQL)