J'ai une procédure stockée avec une sélection et une mise à jour. Je voudrais empêcher plusieurs utilisateurs, de l'exécuter, en même temps, donc je ne mets pas à jour, basé sur une sélection incorrecte. Comment le verrouiller? J'ai lu diverses solutions (Transaction isolation, xlock), mais je n'ai pas été capable de comprendre ce que je veux vraiment, et comment le faire.Verrouillage de la procédure stockée
0
A
Répondre
4
Le plus simple est d'oublier les verrous de données mais regardez sp_getapplock pour contrôler l'accès par le code
BEGIN TRY
EXEC sp_getapplock ...
SELECT ...
UPDATE ...
EXEC sp_releaseapplock
END TRY
...
Dire que, chose comme la clause de sortie et une utilisation judicieuse des ROWLOCK, UPDLOCK il y a une bonne chances UPDATE et SELECT peuvent être une instruction
0
Utilisation de l'indicateur de table XLOCK dans la requête SELECT
:
CREATE TABLE [X]([x] INT NOT NULL)
GO
INSERT [X]([x]) SELECT 0
GO
CREATE PROCEDURE [ATOMIC]
AS
BEGIN
BEGIN TRAN
DECLARE @x INT = (
SELECT [x]
FROM [X] (XLOCK)
) + 1
UPDATE [X] SET [x] = @x
COMMIT TRAN
END
GO
Vous pouvez ensuite tester en exécutant
EXEC [ATOMIC]
GO 10000
simultanément de différentes sessions. Vous pouvez tester en utilisant
SELECT [x] FROM [X]
La valeur doit être exactement 10 000 fois le nombre de sessions que vous avez exécutées. Si le nombre est inférieur à ce que vous attendiez, vous n'avez pas de lecture + écriture atomique, ou certains SPID peuvent avoir été détruits en raison d'un verrouillage inactif.
Questions connexes
- 1. SQL: Utilisation de la procédure stockée dans une procédure stockée
- 2. Exécuter la procédure stockée w/Paramètre dans la procédure stockée
- 3. Procédure stockée exécutant une autre procédure stockée
- 4. écriture procédure stockée dans l'autre procédure stockée
- 5. Exécuter la procédure stockée
- 6. Utilisation de la procédure stockée
- 7. Modification de la procédure stockée
- 8. Appel de la procédure stockée
- 9. Procédure stockée
- 10. procédure stockée
- 11. Procédure stockée
- 12. procédure stockée
- 13. Procédure stockée
- 14. Procédure stockée?
- 15. procédure stockée
- 16. procédure stockée
- 17. procédure stockée
- 18. Passer des paramètres de la procédure stockée à la fonction (à l'intérieur de la procédure stockée)
- 19. structure de procédure stockée
- 20. problèmes de procédure stockée
- 21. Imbrication de procédure stockée
- 22. Transaction de procédure stockée
- 23. insertion de procédure stockée
- 24. Syntaxe de procédure stockée
- 25. Erreur de procédure stockée
- 26. Ecriture de procédure stockée
- 27. Comment écrire la procédure stockée
- 28. hibernate et la procédure stockée
- 29. erreur dans la procédure stockée
- 30. Tableau dans la procédure stockée
Pouvez-vous ajouter les commandes UPDATE et SELECT s'il vous plaît? – gbn