2010-10-06 4 views
0

Je développe une application ETL avec traitement par lots. La concurrence est faible (c'est-à-dire non) pour les mises à jour. Je voudrais éviter les frais généraux des verrous granulaires et l'escalade de verrouillage en fermant simplement toute la table. Je voudrais éviter d'avoir à spécifier TABLOCK dans chaque instruction. Est-il possible de définir la granularité de verrouillage en haut d'une procédure stockée afin que chaque instruction obtienne automatiquement des verrous de table sur chaque table utilisée? Partagé ou exclusif n'a pas d'importance, bien que le partage soit préféré; l'ETL s'exécute pendant la nuit sans charge de requête ad hoc et avant qu'un lot de rapports ne soit déclenché lorsque l'ETL est terminé.Définition de la granularité de verrouillage pour toutes les instructions dans une procédure stockée - Microsoft SQL Server 2000

Merci!

Répondre

0

Vous aurez besoin de jeter un oeil à Transaction Isolation Levels

Mais pour être honnête, je ne vois pas pourquoi vous devez faire quoi que ce soit. J'aurais pensé que SQL Server ferait un assez bon travail de verrouillage par lui-même.

+0

J'avais peur qu'il n'y ait pas d'option. Le niveau d'isolement n'affecte pas directement la granularité, bien que si j'utilise sérialisable, il utilisera des verrous de distance, mais il n'y a aucun moyen de dire à quel point ces plages sont granulaires. J'essaie d'optimiser au-delà de "assez bon". Pour moi, cela vaut la peine de mettre une instruction SET dans une procédure stockée, mais pas de mettre des astuces de table sur chaque instruction. – alyssackwan

Questions connexes