Çalıştığım şirketin, işlemlerle her 10 saniyede bir yazılı olan büyük günlük/günlük tabloları var. Bu tablodaki bir çok veriyi kopyalamak ve bu tablodan silmek istiyorum çünkü eski verilerin yaklaşık% 75'i bir arşiv tablosuna veya başka bir şeye konabilir, ancak eğer yanlış yaparsam ve masa kilitlenirse yukarı bir felaket olurdu.Büyük bir üretim tablosundan veri kopyalama
bir adam böyle bir şey ile geldi bir önceki soruya, ben beni güvende tutmak için yeterli nolock ipucu ve tüm yazma gayet güzel çalışıyor, bu her şeyi berbat olmaz bilmek istiyorum? Eğer değilse, ne yapmalıyım?
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
Bu, eski kayıtların SİLİNMESİ için planınız dışında harika bir şey mi? Gerçekten bir çeşit kilitlenme olmadan bunu yapmanın bir yolu değil. – JNK
Evet, soruyu biraz açıklığa kavuşturdum, bu yüzden eski db işlemlerini silmenin en iyi yolu nedir? –