I have query for updating and inserting large amount of data:
update [TableA]
set ColumnA1 = 'ValueA1'
DECLARE @MyCursor CURSOR;
DECLARE @MyField char(16);
BEGIN
SET @MyCursor = CURSOR FOR
select ColumnA1 from [TableA]
Where ColumnA2 = ValueA2
OPEN @MyCursor
FETCH NEXT FROM @MyCursor
INTO @MyField
WHILE @@FETCH_STATUS = 0
BEGIN
FETCH NEXT FROM @MyCursor
INTO @MyField
Insert Into TableB(ColumnB1, ColumnB2, ColumnB3, ColumnB4, ColumnB5, ColumnB6)
Values(@MyField, ValueB1, ValueB2, ValueB3, ValueB4, ValueB5)
END;
CLOSE @MyCursor ;
DEALLOCATE @MyCursor;
END;
As you notice first I update TableA and then I use updated TableA records to insert some logs information to TableB. I want do whole sql command in transaction manner. I scare that using begin transaction
locks entire sql server database. Already I use Entity Framework and I didn't know how it handles this sort of commands without locking sql server.