2009-05-22 25 views
0

J'ai un problème survenu dans Microsoft Dynamics GP, et je fais des recherches pour voir si c'est la cause, mais cela pourrait être un problème d'accès à SQL Server. GP stocke des données dans SQL Server et MS Access est utilisé pour accéder aux données de la table. Certaines données semblent manquer dans la base de données de production. Malheureusement, je ne sais pas ce qui se passe avec Access, car cela ne me l'est pas. Une solution simple serait de leur dire d'arrêter d'utiliser Access pour vérifier si les données sont toujours manquantes, mais j'aimerais connaître les problèmes documentés avant de suggérer cela.Y a-t-il des problèmes avec la connexion MS Access à une base de données SQL Server dont je devrais être au courant?

Alors, pour tenter de deviner ce qui se passe, qu'Apnet fait quand il est connecté à SQL Server en tant que back-end? Verrouille-t-il les tables? Que faudrait-il faire pour que les données soient manquantes ou supprimées? Si l'accès est la cause, quelles mesures devraient être prises pour le résoudre?

+0

Cela ressemble à un travail pour Microsoft Support ;-) – lothar

Répondre

3

Avez-vous l'intention d'autoriser Access à modifier ou supprimer des données? Si ce n'est pas le cas, avez-vous envisagé de configurer un ID utilisateur à utiliser par Access qui autorise un accès en lecture seule (sans jeu de mots)?

Dans tous les cas, une bonne pratique SQL Server consiste à s'assurer que les comptes d'utilisateur disposent des droits d'accès minimaux nécessaires pour répondre aux exigences métier. Merci de ne pas donner à tout le monde le compte avec un mot de passe vide.

EDIT:

Pensez accès comme SQL Server Management Studio, autrement dit un outil interactif peut utiliser pour interroger et modifier la base de données de manière pratiquement illimitée à condition que votre compte dispose des autorisations pour vous permettre de faire cette. Comme il s'agit d'un environnement interactif où l'on peut remonter une table, la suppression d'une ligne est aussi simple que de cliquer sur cette ligne et d'appuyer sur la touche d'effacement. Similairement changer une valeur de données est aussi simple que de cliquer sur cette ligne et colonne et en tapant une nouvelle valeur.

Bien sûr, la suppression de quelque chose est aussi simple que de frapper accidentellement la touche d'effacement.

Il ne me surprend pas que lorsque vous donnez aux utilisateurs un tel outil et un compte sans restrictions d'accès, les données finissent par être modifiées, que ce soit par intention, accident ou autrement.

+0

Merci. Je suis avec un ISV.C'est pourquoi je n'ai aucune idée de ce qu'ils font avec Access. – Kinze

2

Les données SQL Server sont généralement accessibles dans MSACCESS à l'aide de tables liées, qui sont des connexions ODBC/OLEDB. Bien que cette technologie soit un peu archaïque et ne soit pas complètement exempte de bogues, je ne vois rien dans la technologie sous-jacente qui pourrait en être la cause.

Vos utilisateurs ordinaires accèdent-ils à ces tables en utilisant une source de données ODBC ou une chaîne de connexion contenant un ID administrateur et un mot de passe pour la base de données SQL Server (droits illimités)? Si c'est le cas, les données manquantes vont être données. La suppression de lignes dans une table liée MSACCESS ouverte est aussi simple que la suppression de lignes dans Excel. Le verrouillage d'enregistrement dans les connexions MSACCESS/SQL est généralement optimiste (sauf si vous le modifiez). Autrefois, sous SQL Server 2000, cela signifiait que si deux personnes éditaient le même enregistrement en même temps, la personne qui enregistrait le dernier a gagné (silencieusement). De nos jours, on dit à la dernière personne qui sauve que quelqu'un d'autre a édité l'enregistrement pendant qu'elle apportait des changements, et elle offre deux options: abandonner mes changements, ou écraser les changements de l'autre personne.

Dans tous les cas, fournir un accès en lecture seule aux tables devrait soulager une grande partie des brûlures d'estomac.