A SELECT v SQL Server umístí sdílený zámek na řádku tabulky - a druhý SELECT by také vyžadoval sdílený zámek a ty jsou vzájemně kompatibilní.
Takže ne - jeden SELECT nemůže zablokovat další SELECT .
Co je WITH (NOLOCK) nápověda k dotazu se používá k tomu, aby bylo možné číst data, která jsou v procesu vkládání (jiným připojením) a která ještě nebyla potvrzena.
Bez této nápovědy k dotazu SELECT může být zablokováno čtení tabulky probíhajícím INSERT (nebo UPDATE ) prohlášení, které uvádí exkluzivní uzamknout řádky (nebo možná celou tabulku), dokud nebude transakce dané operace potvrzena (nebo vrácena zpět).
Problém WITH (NOLOCK) rada je:možná čtete datové řádky, které nakonec nebudou vloženy vůbec (pokud INSERT transakce je vrácena zpět) - takže váš např. report může zobrazit data, která nikdy nebyla do databáze skutečně vložena.
Existuje další nápověda k dotazu, která by mohla být užitečná – WITH (READPAST) . To dává pokyn SELECT příkaz pouze přeskočit všechny řádky, které se pokouší číst a které jsou výhradně uzamčeny. SELECT nebude blokovat a nebude číst žádná "špinavá" nepotvrzená data - ale může přeskočit některé řádky, např. nezobrazovat všechny řádky v tabulce.