Abbiamo una tabella con oltre 150 milioni di record. Abbiamo bisogno di cancellare/cancellare tutte le righe. L'operazione di cancellazione impiegherebbe per sempre a causa della sua scrittura nei t-logs e non possiamo modificare il nostro modello di recupero per l'intero DB. Abbiamo testato l'opzione tabella troncata.Bulk delete (truncate vs delete)
Quello che ci siamo resi conto che troncare rilascia le pagine dalla tabella, e se non sbaglio le rendono disponibili per il riutilizzo ma non riducono automaticamente il db. Quindi, se vogliamo ridurre la dimensione del DB, avremmo davvero bisogno di eseguire il comando db shrink dopo aver troncato la tabella.
È questa procedura normale? Tutto ciò di cui abbiamo bisogno per essere attenti o consapevoli, o ci sono alternative migliori?
su SQL Server, 'cadere table' non può essere utilizzato se ci sono vincoli di chiave esterna. http://msdn.microsoft.com/en-us/library/ms173790.aspx – ProKiner
@prokiner hai avuto a che fare con riferimenti di chiavi straniere, non importa quale, cioè se la (e) riga (i) viene cancellata, ridotta o rilasciata, qualsiasi record in altre tabelle che fanno riferimento a questa o più righe devono essere eliminate prima o rimosso il vincolo. In alcuni casi questo può essere "automatizzato" con i trigger ON DELETE, ma questo è difficilmente applicabile a database di tipo 150+ Million. – mjv
@prokiner, avrei dovuto essere più chiaro.Quelli erano pensati per essere due pensieri separati, stavo solo sottolineando la questione se l'OP avesse dichiarato di aver testato il metodo troncato. Ho ripulito la mia risposta. –