1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Wiederherstellungsmodus per Script ändern

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Joshua, 25 Januar 2011.

  1. Joshua

    Joshua Guest

    Moin zusammen,

    ich bin der Neue und komm jetzt öfter. ;-)

    Ich kopiere gerade eine ganze Latte Datenbanken von Server A auf Server B (über der Assi); obwohl die Datenbanken auf Server A den Wiederherstellungsmodus "Einfach" verwenden, werden Sie auf Server B als "Vollständig" wiederhergestellt.

    Da es sich nur um einen Entwicklungs- und nicht um einen Produktivserver handelt, ist genau das nicht gewollt. Bevor ich nun jede Datenbank händisch auf "Einfach" umstelle und das Protokoll verkleinere, dachte ich mir: Das geht bestimmt per Script - die Frage ist nur, wie?

    Ich bin nicht wirklich bewandert damit, daher bitte ich euch um Hilfe; das Auflisten der Datenbanken mittels
    use master
    selecet name from sys.databases

    habe ich schon hinbekommen, auch das Umstellen auf "Einfach" mit einer einzelnen Datenbank krieg ich hin:
    alter database database_name set recovery simple

    Wie bekomme ich das nun hin, das alle Datenbanken, deren Name mit "xyz" beginnt, auf "Einfach" gestellt und das Protokoll verkleinert wird?

    Bin für jede Hilfe wirklich dankbar!

    Cheers,
    Joshua
     
  2. Charly

    Charly Datenbank-Guru

    AW: Wiederherstellungsmodus per Script ändern

    Hallo Joshua,

    ist für SQL-Server 2000 kann man aber leicht auf die neuen Tabellen und Spaltennamen umstellen.

    Code:
    use master
    go
    DECLARE @DBName nvarchar(128)
    DECLARE @DBID int
    DECLARE @SQLSTR nvarchar(500)
     
    SELECT @DBID = min(dbid) FROM dbo.sysdatabases
    WHILE @DBID IS NOT NULL
    BEGIN
     SELECT @DBName = [Name] FROM dbo.sysdatabases
     WHERE DBID = @DBID
     
     IF @DBName LIKE 'xyz%'
     BEGIN
      SET @SQLSTR = 'alter database ' + @DBNAME + ' set recovery simple'
     
      PRINT @SQLSTR
      --EXEC sp_executesql @SQLSTR  
     END
     
     
     SELECT @DBID= min(dbid) FROM dbo.sysdatabases
     WHERE dbid > @DBID
    END

    Ich habe die Zeile EXEC sp_executesql @SQLSTR erstmal auskommentiert damit man die erzeugten SQL-Statements mit PRINT @SQLSTR prüfen kann.
    Gruß Charly
     
  3. Joshua

    Joshua Guest

    AW: Wiederherstellungsmodus per Script ändern

    Danke@Charly.

    Natürlich habe ich vergessen zu erwähnen, welchen SQL Server ich einsetze, mea culpa.

    Wir arbeiten mit SQL 2008 R2.

    Cheers,
    Joshua
     
  4. Joshua

    Joshua Guest

    AW: Wiederherstellungsmodus per Script ändern

    Funktioniert auch unter SQL 2008 R2 - prima, vielen, vielen Dank!

    Cheers,
    Joshua
     
  5. Joshua

    Joshua Guest

    AW: Wiederherstellungsmodus per Script ändern

    @Charly:
    Ich habe versucht, SHRINK DATABASE_LOG mit einzubauen, scheitere aber kläglich.
    Kannst du mich nochmal schubsen?

    Nach dem Umstellen auf "Einfach" sollen alle Protokolle verkleinert werden.

    Ich würde das Skript dann täglich (bzw. "nächtlich" *g*) laufen lassen.

    Danke schonmal!

    Cheers,
    Joshua
     
  6. Charly

    Charly Datenbank-Guru

    AW: Wiederherstellungsmodus per Script ändern

    Hallo Joshua,

    Schau Dir mal den Artikel von MS an:

    http://msdn.microsoft.com/de-de/library/ms190488(v=SQL.105).aspx

    Da wird die Verwendung von DBCC SHRINKDATABASE beschrieben.

    Wenn du nicht gerade die Express Edition besitzt solltest du Dir einen Wartungsplan mit dem Agent zusammenbauen um tägliche Aufgaben zu erledigen.

    Gruß Charly
     
  7. Joshua

    Joshua Guest

    AW: Wiederherstellungsmodus per Script ändern

    Hallo Charly,

    keine Express Edition, Wartungsplan käme dann sowieso zum Einsatz. ;-)

    SHRINKDATABASE ist allerdings genau das, was ich nicht möchte. Händisch ausgeführt verkleinere ich explizit nur die Datei, nicht die Datenbank.

    Allerdings funktioniert der Aufruf von SHRINKFILE im Skript noch nicht richtig...

    Cheers,
    Joshua
     
  8. Charly

    Charly Datenbank-Guru

    AW: Wiederherstellungsmodus per Script ändern

    Hallo Joshua,

    dito

    Ist aber in Arbeit. Habe zur Zeit nur ein bisschen viel um die Ohren.

    Gruß Charly
     
  9. Joshua

    Joshua Guest

    AW: Wiederherstellungsmodus per Script ändern

    Och, lass uns nen Club gründen, geht mir genauso.
    Ich dank dir!

    Cheers,
    Joshua
     
  10. Charly

    Charly Datenbank-Guru

    AW: Wiederherstellungsmodus per Script ändern

    Hallo Joshua,

    so gehts.

    Code:
    use master
    go
    DECLARE @DBName nvarchar(128)
    DECLARE @DBID int
    DECLARE @SQLSTR nvarchar(128)
    DECLARE @FILENAME nvarchar(128)
     
    CREATE TABLE #FNAME ([name] nvarchar(500))
    SELECT @DBID = min(dbid) FROM dbo.sysdatabases
    WHILE @DBID IS NOT NULL
    BEGIN
     SELECT @DBName = [Name] FROM dbo.sysdatabases
     WHERE DBID = @DBID
     
     IF @DBName LIKE 'dat%'
     BEGIN
     EXEC ('INSERT #FNAME SELECT [name] FROM ' + @DBName + '.dbo.sysfiles WHERE RTRIM(filename) like ''%.ldf''')
     SELECT @FILENAME = [name] FROM #FNAME
     EXEC('USE ' + @DBNAME + ' DBCC SHRINKFILE (' + @FILENAME + ')')
     
     DELETE FROM #FNAME
     END
     SELECT @DBID= min(dbid) FROM dbo.sysdatabases
     WHERE dbid > @DBID
    END
    DROP TABLE #FNAME
    
    Nachdem ich ein positives Ergebnis hatte habe ich nicht weiter daran rumoperiert. Voraussetzung ist nur ein Logfile pro DB. Andernfalls brauchst Du noch eine Schleife für die Tabelle #FNAME.
    Wahrscheinlich lässt sich das ganze noch optimieren. Dazu fehlt mir jetzt aber so ein bisschen die Lust.:D

    Gruß Charly
     
Die Seite wird geladen...

Diese Seite empfehlen