La raison la plus commune est que le compte d'invité d'Internet (IUSR_MACHINE), qui est par la pièce de défaut du « chacun » groupe, n'a pas des autorisations d'écriture sur la base de données (.mdb). Pour fixer ce problème, employer l'étiquette de sécurité dans l'explorateur pour ajuster les propriétés à ce dossier de sorte que le compte d'invité d'Internet ait les permissions correctes.
NOTE : En employant des bases de données de Microsoft Access avec l'AGITATION, il est également nécessaire de donner l'invité d'Internet que le compte des autorisations d'écriture sur l'annuaire contenant le dossier de .mdb. C'est parce que le gicleur crée un dossier de .ldb pour manipuler le verrouillage de base de données. Vous pouvez également devoir donner la permission lecture/écriture sur la chemise de « Temp » parce que le gicleur peut créer les fichiers temporaires dans cet annuaire.
Une deuxième cause de cette erreur est que la base de données n'a pas été ouverte avec le MODE correct pour l'écriture. Si vous exécutez l'ouvert sur l'objet connexion, vous employez la propriété de mode pour indiquer les permissions sur le raccordement comme montré ici :
SQL = « ensemble de produits de MISE À JOUR UnitPrice = 2 ; »
Placer des conn. = Server.CreateObject (« ADODB.Connection »)
Conn.Mode = 3 '3 = adModeReadWrite
Conn.Open « myDSN »
Conn.Execute (SQL)
Conn.Close
NOTE : Par défaut, le MODE est placé à 0 (adModeUnknown), qui permet généralement des mises à jour.
Une autre cause de cette erreur est que seulement » l'arrangement « lu peut être signé la page d'options ce DSN dans le directeur d'ODBC.
La derniers issue et travail concerne autour n'importe quel point d'émission de SQL. L'erreur peut être provoquée par les commandes SQL Qui violent l'intégrité référentielle de la base de données. Voici quelques unes des questions les plus communes qui échouent :
Les groupes les plus simples à traiter sont ceux que vous ne pouvez pas changer : crosstab, fonction émulation de SQL, union, ou questions d'action de mise à jour (ou faire-table) qui ont des propriétés d'UniqueValue réglées à oui.
Une autre cause très commune est quand la jointure inclut les tables liées d'ODBC qui n'ont pas des index uniques. Dans ce cas-ci, il n'y a aucune manière pour que le SQL garantisse que les disques sont uniques dans une table qui a les champs dont la valeur changera avec la question.
Une cause a un contournement robuste. Si vous essayez de mettre à jour un champ de jointure du « un » côté des « un-à-beaucoup » question elle échouera à moins que vous tourniez les mises à jour dessus de cascade. De cette façon, vous déléguez l'intégrité référentielle au réacteur.