Компания, в которой я работаю, имеет несколько огромных журнальных / журнальных таблиц, которые записываются каждые 10 секунд или около того с помощью транзакций.Я хотел бы скопировать много данных из этой таблицы и удалить их из этой таблицы, потому что около 75% старых данных могут быть помещены в архивную таблицу или что-то в этом роде, но если я сделаю это неправильно, и таблица будет заблокированавверх это будет катастрофа.
В предыдущем вопросе парень придумал что-то вроде этого, я хотел бы знать, что это не все испортило бы, достаточно ли намека на nolock, чтобы держать меня в безопасностии все записи работают нормально?Если нет, что мне делать?
set identity_insert newtable on
DECLARE @StartID bigint, @LastID bigint, @EndID bigint
select @StartID = max(id)+1
from newtable
select @LastID = max(ID)
from oldtable
while @StartID < @LastID
begin
set @EndID = @StartID + 1000000
insert into newtable (FIELDS,GO,HERE)
select FIELDS,GO,HERE from oldtable (NOLOCK)
where id BETWEEN @StartID AND @EndId
set @StartID = @EndID + 1
end
set identity_insert newtable off
go