Es kann u.U. geschehen, dass die Datenbank, speziell eine der Datenbankdateien (*_log.LDF) immer größer wird.

Dies kommt durch die automatisch Log-Funktion des MSSQL Datenbankservers, der im Standard jegliche Anfragen mitloggt und speichert. Dieses Verhalten ist jedoch nicht zwingend nötig und kann daher geändert werden, sodass dieser nur eingeschränkt (z.B. bei Fehlern) mitloggt.



Diese Anleitung erklärt direkte Arbeiten an der Datenbank.

Diese sollten nur von erfahrenen Anwendern und in jedem Fall nach einer vollständigen Sicherung der betroffenen Datenbank ausgeführt werden.

Für etwaige Schäden ist der Anwender verantwortlich.



Mit folgender Anleitung können Sie die Datei wieder verkleinern und die Art des Loggings umstellen:

 

  1. Öffnen Sie das MSSQL Management Studio und verbinden Sie sich mit Ihrer Unicorn - SQL Instanz (z.B. localhost\UNICORN21).
  2. Öffnen Sie im Objekt - Explorer auf der linken Seite den Node "Datenbanken".   
  3. Wählen Sie die Datenbank aus, von der Sie die Dateien verkleinern wollen (beispielsweise: "UNICORN2").
  4. Öffnen Sie per Rechtsklick auf die Datenbank das Kontextmenü und wählen Sie "Neue Abfrage" aus.
  5. Im sich auf der rechten Seite öffnenden Fenster geben Sie bitte nachfolgenden Text ein .





    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23


    DECLARE @MANDANT VARCHAR(255)
    DECLARE @SPEICHERORT VARCHAR(1000)
    DECLARE @SQL VARCHAR(2000)
     
    SET @MANDANT = 'UNICORN2'
    SET @SPEICHERORT = 'C:\Backup'
     
    SET @SQL = 'ALTER DATABASE '+@MANDANT+' SET RECOVERY FULL'
    EXEC (@SQL)
    SET @SQL = 'DBCC SHRINKFILE ('''+@MANDANT+'_log'',2)'
    EXEC (@SQL)
    SET @SQL = 'DBCC SHRINKDATABASE ('''+@MANDANT+''', TRUNCATEONLY)'
    EXEC (@SQL)
    SET @SQL = 'BACKUP DATABASE ['+@MANDANT+'] TO DISK = N'''+@SPEICHERORT+'\'+@MANDANT+'.bak'' WITH NOFORMAT, INIT, NAME = N''Vollstaendige Datenbank Sicherung'', SKIP, NOREWIND, NOUNLOAD, STATS = 10'
    EXEC (@SQL)
    SET @SQL = 'BACKUP LOG ['+@MANDANT+'TO DISK = N'''+@SPEICHERORT+'\'+@MANDANT+'.trn'' WITH NOFORMAT, INIT, NAME = N''@MANDANT-Transaction Log Backup'', SKIP, NOREWIND, NOUNLOAD, STATS = 10'
    EXEC (@SQL)
    SET @SQL = 'DBCC SHRINKFILE ('''+@MANDANT+'_log'',2)'
    EXEC (@SQL)
    SET @SQL = 'DBCC SHRINKDATABASE ('''+@MANDANT+''', TRUNCATEONLY)'
    EXEC (@SQL)
    SET @SQL = 'ALTER DATABASE '+@MANDANT+' SET RECOVERY SIMPLE'
    EXEC (@SQL)






  6. Ersetzen Sie in der Zeile "SET @SPEICHERORT = 'C:\Backup'" das "C:\Backup" durch den von Ihnen gewünschten Speicherort für das Backup (Bitte achten Sie darauf, dass hier genügend freier Speicherplatz zur Verfügung steht (mindestens soviel wie die Datenbankdatei jetzt gerade groß ist + 5 GB).
  7. Klicken Sie auf den Button "Ausführen" (Hinweis: Die Verarbeitung kann einige Minuten bis Stunden in Anspruch nehmen).