Değerli Arkadaşlar,

Geçen gün ilginç bir durum başımıza geldi. Çok satırlı update cümlesi çalıştırmamız gereken bir databasede hardiskte yer problemi vardı. Her bir update cümlesi logda şişmeye sebep olduğu için belli bir süre sonra hdd de yer kalmıyordu. En sonunda kendimize bir stored procedure yazmaya karar verdik. Stored procedure tablodaki kayıt sayısına göre belli aralıklarla db yi shirink ediyor böylece log sıfırlanıyor. Bu da hdd deki yer tüketimini engelledi. Bizim işimize yaradı belki sizlerinde işine yarıyabilir düşüncesi ile paylaşıyorum.

Declare @id decimal, @tmpid decimal

SELECT @id = max(Table1_ID) FROM Table1

SET @tmpid = 0

WHILE 1=1
begin 
      
      DBCC SHRINKDATABASE (DB, 10);

     
        update Table1 set full_Index = ltrim(rtrim(convert(char(2), FSFIRM_ID)))  + Rtrim(full_Index)
            WHERE Table1_ID >= @tmpid AND Table1_ID < @tmpid + 500000
     
      if (@tmpid > @id)
      begin
            break
      end
      
       SET @tmpid = @tmpid + 500000
      
      if(@tmpid > @id)
      begin
           set @tmpid = @id +1
      end
     
      print @tmpid
     
end

İyi çalışmalar.