SQL Server : Erreur lors d’un update de plusieurs lignes en même temps.

« La sous-requête a retourné plusieurs valeurs. Cela n’est pas autorisé… »
Une commande UPDATE toute simple mettant à jour plusieurs enregistrements peut facilement dégénérer en une erreur fort intrigante.
Exemple :
UPDATE ma_table SET departement = 44 WHERE ville = ’Nantes’
SQL Server va renvoyer l’erreur suivante :

Msg 512, Niveau 16, �tat 1, Procédure reconduite_u, Ligne 14
La sous-requête a retourné plusieurs valeurs.
Cela n’est pas autorisé quand la sous-requête suit =, !=, <, <= , >, >= ou quand elle est utilisée en tant qu’expression.
L’instruction a été arrêtée.

Sans entrer dans les détails, il faut d’abord vérifier la présence d’un éventuel TRIGGER attaché à cette table. Il suffit de le désactiver pour que la commande UPDATE se passe bien.

MOSS 2007 : Problème de backup dans une topologie 3-tiers

Dans une topologie 3-tiers (1 serveur de BDD, 1 serveur d’admin WSS, 1 serveur web frontal), il est important de respecter certaines proconisations pour lancer un stsadm -o backup :

  • Utiliser un chemin UNC (\SERVERNAMEetc.) pour décrire le chemin physique de stockage du fichier de backup. En effet, le serveur de BDD va écrire dans ce répertoire. Etant donné qu’il est « distant », il faut lui donner un chemin d’accès adéquat.
  • Donner les droits d’écriture pour ce répertoire au compte de service de SQL Server.