Ich habe CTEs, die alle NOLOCK innen verwendet. Aber dann wählt aus diesen CTEs in Eltern-CTEs mit Kindern CTEs nicht NOLOCK in der Annahme, dass es bereits NOLOCK'd ist. Und die letzte Auswahl verwendet NOLOCK auch nicht.SQL Server 2008: Wie funktioniert NOLOCK für CTE?
So etwas:
with cte1 as
(select * from tab1 (nolock)),
cte2 as
(select * from cte1)
select * from cte2
oder soll ich schreiben
with cte1 as
(select * from tab1 (nolock)),
cte2 as
(select * from cte1 (nolock))
select * from cte2 (nolock)
dank
Ich würde SELECT nicht verwenden * 'oder' NOLOCK' überhaupt. Da CTEs ab SQL 2005 unterstützt werden, gibt es bessere Möglichkeiten, sicherzustellen, dass Sie festgeschriebene, aber historische Daten lesen als NOLOCK. –
Ich möchte nicht lange laufen Bericht einen Tisch zu sperren .. was meine anderen Optionen sind? –