Wenn Sie auf eine andere Ressource wie einen Endbenutzer warten, befolgen Sie den Rat von Dave Markle und tun Sie es nicht.
Versuchen Sie andernfalls den folgenden T-SQL-Code:
BEGIN TRAN
SELECT *
FROM authors AU
WITH (HOLDLOCK, ROWLOCK)
WHERE AU.au_id = '274-80-9391'
/* Do all your stuff here while the row is locked */
COMMIT TRAN
Der HOLDLOCK hint bittet SQL Server höflich, die Sperre zu halten, bis Sie die Transaktion festschreiben. Das ROWLOCK hint bittet SQL Server höflich, nur diese Zeile zu sperren, anstatt eine Seiten- oder Tabellensperre zu erteilen.
Beachten Sie, dass, wenn viele Zeilen betroffen sind, entweder SQL Server die Initiative ergreift und zu Seitensperren eskaliert, oder Sie haben eine ganze Armee von Zeilensperren, die den Speicher Ihres Servers füllen und die Verarbeitung verlangsamen.