Comment éviter l’erreur SQL Server Impossible de trouver l’objet car il n’existe pas ou vous n’avez pas les autorisations nécessaires ?
En T-SQL, pour effacer le contenu complet d’une table, le moyen le plus rapide est d’exécuter une requête Truncate Table, qui génère cette erreur: Impossible de trouver l’objet car il n’existe pas. La requête Truncate est différente de la requête Delete From car elle vide toutes les lignes de la table sans clause where. C’est une opération SQL en langage de définition de base de données (LDD). En réalité, un niveau d’accès plus important est nécessaire pour effectuer un Truncate sur une table afin d’éviter les erreurs.
Erreur SQL Server Impossible de trouver l’objet car il n’existe pas ou vous n’avez pas les autorisations nécessaires
Supposons que la table existe dans la base de données. Dans ce cas, il s’agit d’une erreur de droits d’accès. En effet, ce message d’erreur s’affiche si le niveau de permissions n’est pas suffisant pour voir ou manipuler la table.
L’exécution de la requête TRUNCATE TABLE dbo.YourTable; a échoué avec l’erreur suivante : « Impossible de trouver l’objet « YourTable » car il n’existe pas ou vous n’avez pas les autorisations nécessaires ».
Causes possibles de cet échec : problèmes liés à la requête, propriété ResultSet non définie correctement, paramètres non définis correctement ou connexion non établie correctement.
Accorder le privilège ALTER sur la table à vider
La première solution est de donner plus de privilèges à l’utilisateur SQL, ou Windows qui exécute la requête TRUNCATE TABLE.
GRANT ALTER ON [dbo].[YourTable] TO [SQLUser] GO
La deuxième solution est d’utiliser DELETE au lieu de TRUNCATE
Une autre alternative est de supprimer directement les données de la table au lieu de la vider complètement. En effet l’instruction TRUNCATE TABLE nécessite plus de droit que l’instruction DELETE FROM. Il existe en effet des différences entre les 2 instructions.
Si les performances du DELETE permettent de l’utiliser, utilisez une instruction comme celle-ci.
DELETE FROM [dbo].[YourTable];
Enfin, cet article décrit deux solutions simples pour éviter l’erreur SQL Server Truncate Table Error Cannot find the object, sur les versions Anglaises de MS SQL.
Consulter aussi d’autres erreurs SQL Server courantes comme l’erreur SQL Server 3702 : Impossible de supprimer la base de données car elle est en cours d’utilisation.
Soyez le premier à commenter