Ich habe die folgende Tabelle in meiner SQL Server 2008-Datenbank:
CREATE TABLE [dbo].[SomeTable]
(
[Id] [bigint] IDENTITY(1,1) NOT NULL,
[Column1] [varchar](30) NOT NULL,
[Column2] [varchar](30) NOT NULL,
[Column3] [varchar](50) NOT NULL,
CONSTRAINT [PK_SomeTable] PRIMARY KEY CLUSTERED
(
[Id] ASC
)
)
Ein Prozess fügt Daten in diese Tabelle ein, ein anderer Prozess liest alle Daten aus dieser Tabelle. Beide Prozesse arbeiten gleichzeitig.
one process:
INSERT INTO dbo.SomeTable VALUES ('col1', 'col2', 'col3')
another process:
SELECT Id, Column1, Column2, Column3 FROM dbo.SomeTable
Ich sehe, dass die zweite Abfrage einen vollständigen Tabellenscan durchführt, aber ich muss alle Daten aus dieser Tabelle zur weiteren Verarbeitung abrufen (es wird keine sehr große Tabelle sein, da sie regelmäßig bereinigt wird. Sie enthält 1K-2K-Zeilen ).
Gibt es eine Möglichkeit, um sicherzustellen, dass bei diesen beiden Abfragen niemals Deadlocks auftreten?