Ma configuration - Un serveur avec deux instances SQL Server 2000, INSTANCE1 et INSTANCE2. Chaque instance a 1 DB, DBprod et DBstag.Verrouillage exclusif SQL Server 2000
J'ai une situation où j'ai besoin de préparer des factures pour plusieurs clients, donc je voudrais placer un verrou exclusif sur une table pendant que je vais chercher un numéro de facture de INSTANCE1.DBprod.LastInvoiceNumber à INSTANCE2.DBstag, effectuer un calcul de soem, Préparez une facture, puis insérez la facture (en-tête et détails) dans INSTANCE1.DBprod, puis mettez à jour INSTANCE1.DBprod.LastInvoiceNumber, répétez l'opération pour le client suivant, puis relâchez le verrou après avoir terminé avec tous les clients.
commencer trans inv
EXCLUSIVEMENT BLOQUER INSTANCE1.DBprod.LastInvoiceNumber
curseur client ouvert
du client suivant d'extraction
get numéro de facture de INSTANCE1.DBprod.LastInvoiceNumber
facture préparer
facture d'insertion pour INSTANCE1.DBprod
mise à jour INSTANCE1.DBprod.LastInvoiceNumber (incrément par 1)
d'extraction suivante du client (préparer facture client suivant )
fermer curseur client
commit trans inv
RELEASE LOCK ON INSTANCE1.DBprod.LastInvoiceNumber
Serait-ce ma solution
SET TRANSACTION ISOLEMENT NIVEAU SERIALIZABLE
Il y a une application comptable en utilisant INSTANCE1.DBprod .LastInvoiceNumber c'est pourquoi je veux verrouiller exclusivement la table jusqu'à ce que j'ai fini de poster toutes mes factures.
Je prépare les factures via un proc stocké. Mon intention est de bloquer toutes les applications d'utiliser le INSTANCE1.DBprod.LastInvoiceNumber jusqu'à ce que j'ai fini de poster toutes mes factures ... Je vais regarder dans votre suggestion. –