2009-09-11 7 views
1

J'ai une application pilotée par les événements qui a récemment commencé à utiliser SQL Express 2008 (au lieu de la version Std) dans dev et test pour stocker l'état actuel d'une machine d'état. Après avoir migré vers SQL Express, nous avons commencé à voir une différence entre l'ordre dans lequel nous écrivons dans la base de données (en utilisant LINQ to SQL) et l'ordre dans lequel SQL Express Profiler signale les données entrant dans la base de données.SQL Express 2008 La validation de LINQ to SQL n'est-elle pas effectuée en séquence?

Nous enregistrons les données à l'aide de Log4Net, et les entrées du journal montrent que les événements entrants se produisent dans le bon ordre et que doit les les traiter dans le bon ordre. Nous avons également constaté lors du profilage SQL Express, que les données sont en cours d'écriture en panne. L'effet est que lorsque les événements suivants arrivent (environ 500ms après avoir appelé SubmitChanges() sur le contexte de données LINQ), les écritures de base de données n'ont pas (encore?) Été validées, donc les modèles d'état pensent que nous sommes dans un état non valide. transition correctement. Le résultat final est le chaos.

Pour ce que cela vaut, je ne vois pas cela dans SQL Server 2008 Standard, donc je me demande si c'est un problème avec SQL Express? Avez-vous vu des problèmes similaires à cela? Je suppose que ce n'est pas un problème avec le profileur, car nous avons effectivement un problème de transition avec certaines transitions d'état, donc le profileur semble être en accord avec les résultats observés.

Cordialement,

Matthews Andrew

Répondre

0

Quand vous dites que vous les avez traités dans l'ordre voulez-vous dire l'ordre dans lequel vous avez dit LINQ to SQL pour faire quelque chose? La raison en est que LINQ to SQL réorganise les opérations en interne.

Que consignez-vous? La propriété de journal LINQ to SQL datacontext?

+0

Salut Damien, vous avez raison - je parlais de l'ordre des événements d'application de haut niveau. Je n'utilise pas (normalement) Log sur le contexte de données parce que je suis déjà en train de consigner GB/heure lorsque le système est sous charge. –

+0

La séquence que vous avez demandée est toujours réorganisée car elle doit créer des objets avant de pouvoir leur assigner des références, etc. Je ne sais pas comment cela vous cause des problèmes à moins que vous n'ayez des déclencheurs? – DamienG