Question Table [nom_table] est introuvable -2147189180


J'ai créé un rapport à l'aide de Crystal Reports XIr2 pour rapporter des informations provenant d'une base de données pour notre application. Il s'agit d'un rapport à onglets croisés qui génère des rapports sur diverses données renvoyées lors de l'exécution d'une procédure stockée.

Un bref aperçu de l'application exécutée par ce rapport - il s'agit d'une application écrite en VB6. Lorsque vous chargez l'application, vous êtes invité à entrer un nom d'utilisateur et un mot de passe configurés sur un serveur SQL en tant que connexions SQL. l'application que vous authentifiez contre la sécurité du serveur SQL.

Le rapport fonctionne parfaitement dans Crystal Reports, mais je constate un comportement étrange avec ce rapport lorsqu'il est lancé depuis notre application sur un site client. Cela fonctionne bien pour tous les utilisateurs avec un accès à la base de données de niveau 'sa' mais donne l'erreur suivante lorsqu'il est exécuté comme n'importe quel autre utilisateur;

Error message

Si je me connecte directement au serveur de base de données en tant qu'utilisateur qui obtient l'erreur ci-dessus dans l'application, l'exécution des procédures stockées fonctionne manuellement sans erreur.

Si je donne à un utilisateur qui reçoit l'erreur dans nos autorisations d'application 'sa' sur le serveur SQL, l'erreur cesse de se produire.

J'ai vérifié tous les droits d'exécution liés à la procédure stockée en question, mais comme indiqué si je me connecte manuellement à SQL Server et exécute la procédure, je ne reçois pas l'erreur ci-dessus.

Si l'utilisateur qui reçoit cette erreur exécute un autre rapport avant ce rapport, cela fonctionne. Toutefois, s'il exécute un rapport après avoir reçu cette erreur, tous les rapports cessent de fonctionner et nécessitent un redémarrage de l'application.

Des idées s'il vous plaît?


11
2017-08-07 12:31


origine


Réponses:


Je vous suggère de vous assurer que le schéma par défaut du mappage utilisateur pour la base de données est défini sur dbo pour les utilisateurs signalant le problème. Je recommande également d'utiliser des rôles de base de données pour cela.


1
2018-01-10 03:54



Accorder une autorisation d'exécution ne s'arrête pas toujours là - Parfois, vous devrez vérifier les blocs d'autorisation possibles des objets à l'intérieur. Lorsque vous dites que vous avez utilisé la connexion de l'utilisateur pour exécuter la procédure manuellement, est-il également certain que les informations d'identification de l'utilisateur vous permettent de vous connecter à la base de données?

Vous pouvez peut-être utiliser une connexion SQL plus universelle que l'application utilisera - de cette façon, vous n'aurez pas à suivre les autorisations pour plusieurs utilisateurs (juste une suggestion! :))


0
2018-01-29 05:25