Danke, dass Sie sich die Zeit genommen haben, meine Frage zu lesen. Wir haben ein System mit T-SQL entwickelt, das (große) Datenmengen verarbeitet. Wenn wir mit der Verarbeitung dieser Daten beginnen, dauert dieser Vorgang in der Regel etwa 15 Minuten. Während dieser Zeit scheint es aus irgendeinem Grund eine Sperre für alle Objekte in der Datenbank zu geben. Zu einem gewissen Grad verstehe ich, dass ich keine Tabellen abfragen kann, in die geschrieben wird. Aber auch SQL Server gibt mir eine Timeout-Sperrmeldung, wenn ich beispielsweise die Liste der Tabellen aktualisiere (mit F5 im Knoten Tabellen im Objekt-Explorer).SQL Server Große Transaktion, die alle Tabellen sperrt
Werke Mein Code basiert auf der folgenden Vorlage:
CREATE PROCEDURE Sample
as
SET NOCOUNT, XACT_ABORT ON
BEGIN TRY
BEGIN TRANSACTION
...
COMMIT TRANSACTION
END TRY
BEGIN CATCH
BEGIN
PRINT 'STORED PROCEDURE - Returned errors while processing'
ROLLBACK TRANSACTION
END
END CATCH
Nun, wenn ich beginnen diese I SELECT MIT durchführen kann (NOLOCK) Abfragen auf jedem Tisch. Aber ich kann keine Definitionen für Ansichten, gespeicherte Prozeduren oder im Grunde irgendeine andere Art von Operation in der Datenbank sehen.
Ich habe bereits die READ UNCOMMITTED Isolationsstufe festgelegt, aber das scheint keinen Unterschied zu machen.
Schätzen Sie jede Hilfe in dieser Angelegenheit.
Mit freundlichen Grüßen
Isolationsstufen beeinflussen, wie select-Anweisungen arbeiten, die werden nicht beeinflussen DDL, DML..Locking, Blockierungen sind große Themen, so suchen Sie bitte auf, wie Sperren Blockierungen lösen und fang von dort an – TheGameiswar