Domanda

Ogni mese facciamo la fine del mese, un'istantanea del nostro database di produzione. Queste istantanee di fine mese sono strettamente ai fini della rendicontazione, non ci sono inserimenti, aggiornamenti o eliminazioni mai fatto su di loro. Ognuna di queste istantanee ha un file .MDF e .LDF.

Voglio eliminare i file .LDF e liberare spazio sul server. Ci sono dei motivi per cui ho bisogno di mantenere i file .LDF?

Chiarimento:

Il nostro database di produzione viene ricreato ogni notte da estratti di file fuori di un altro sistema. Riportiamo solo fuori del database di produzione ... non gli aggiornamenti sono mai fatto.

Nightly processo:
Da quello che posso dire ...
Ogni sera i tavoli databse vengono troncati
I tavoli sono popolate attraverso una serie di massa inserto dichiarazioni
Gli indici sono ricostruito

È stato utile?

Soluzione 4

Ecco la soluzione mi è venuta a ridursi i file LDF.

  1. Stacca database
  2. file Rinomina LDF a * _old.ldf
  3. Allega database
  4. Rimuovere la refernece alla mancanza LDF

Questa ricrea un file LDF che è 504K di dimensione.

  1. Elimina * _old.ldf
  2. Svuota cestino

Questo ha recuperato una notevole quantità di spazio su disco sul server. Si lavora per noi, perché tutti questi database sono database di report statici SOLO. Non ci sono inserimenti, aggiornamenti o eliminazioni sarà mai eseguita nei confronti di questi database.

UPDATE 2019/09/24: Sì, sono d'accordo questo è una pessima idea. Ho smesso di fare questo quasi immediatamente. Ho ricostruito tutti gli indici con un fattore di riempimento di 100. retratto solo i file ldf. E ha cambiato tutti i database per essere letto solo.

Altri suggerimenti

Non dovrebbe eliminare il file di registro. Se si sta cercando di ricollegare un file di dati, senza il registro, SQL Server può tecnicamente ricrearlo, ma ci sono alcuni problemi potenziali, come se non ci fossero transazioni aperte quando il database è stato staccato. In questo caso, si avrebbe la perdita totale dei dati.

Consumare lo spazio, e non eliminare i file di log . Sei in cerca di guai con questo.

questo articolo sul log delle transazioni , in particolare la parte "Log cattiva gestione".

Come menzionato in un'altra risposta , non è possibile eliminare il file di log. Che cosa si potrebbe fare è impostare il database per READ_ONLY. Con il database in READ_ONLY, nessuna modifica sono ammessi e il file di log non crescerà. Si potrebbe ridurre le dimensioni del file di registro a una dimensione minima e raggiungere il tuo obiettivo di un ingombro minimo. Per impostare il database in READ_ONLY eseguire il seguente comando:

USE master;
GO
ALTER DATABASE databasename SET READ_ONLY;
GO

È possibile modificare il database per tornare READ_WRITE, apportare le modifiche necessarie, quindi impostarlo READ_ONLY qualsiasi momento è necessario.

Il file di log è ancora necessaria per mantenere le proprietà ACID del database.

Il fatto è che si può creare un database semplicemente usando il file mdf. E 'il comando sp_attach_single_file_db (Transact-SQL). Si noti che verrà rimosso in una versione futura di Microsoft SQL Server. Ma, non è intelligente per eliminare i file LDF. Shark è giusto 'che stai chiedendo problemi con questo.' Un altro punto di vista - sono i file LDF enorme? Se lo sono, si può fare qualcosa per loro.

  1. Imposta il database per semplice modello di recupero . È possibile farlo solo se non si desidera eseguire il rollback delle transazioni
  2. Invece di fare file MDF e LDF, creare un file di backup completo del database (.BAK). Sarà più piccolo tnan MDF + LDF
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top