Question

Je sais que dans la base de données Oracle, je peux configurer un drapeau, que toutes les requêtes de sélection en cours d'exécution sur un DB spécifique peut être exécuté comme si l'indice de NOLOCK a été ajouté. Y at-il quelque chose de similaire dans SQL Server?

Était-ce utile?

La solution

Vous pouvez définir la base de données en READ_ONLY en mode , qui a certainement modifie certaines des règles de transaction, mais je ne pense pas qu'il y ait quoi que ce soit plus proche d'une NOLOCK mondiale.

Modifier

Si vous voulez être en mesure d'effectuer des effacements et INSERTs UPDATEs, mais vous ne voulez pas les lecteurs de verrouiller ou doivent spécifier les indications ou les niveaux d'isolement, vous pouvez aussi envisager de se tourner sur READ_COMMITTED_SNAPSHOT , mais la sémantique il y a encore pas tout à fait la même chose que l'indicateur NOLOCK.

Autres conseils

Non à un niveau par base de données. Vous ne pouvez le faire avec des notes ou set transaction isolation level. Vous pouvez définir une base de données en mode lecture seule, ce qui peut avoir cet effet par défaut, mais qui sera (comme son nom l'indique) rendent impossible écrit dans la base.

Cela peut être utile pour une base de données est actualisée périodiquement. Vous définissez la base de données en lecture seule et mettre à inscriptibles pour les mises à jour puis de nouveau en lecture seule.

Non pour la base de données entière, mais pour chaque requête que vous faites:

SELECT a, b
FROM t1
WITH (NOLOCK)
WHERE t1.c = @value

ou

SELECT a, b
JOIN t1
ON t1.id = t2.id
WITH (NOLOCK)
FROM t2
WHERE t2.c = @value

etc

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top