Microsoft SQL Archive - Daniel Gutermuth https://danielgutermuth.de/tag/microsoft-sql/ IT Blog Wed, 15 Dec 2021 14:34:15 +0000 de hourly 1 SQL Server – Wiederherstellung von Datenbanken aus einem Backup https://danielgutermuth.de/microsoft/windowsserver/sql-server-wiederherstellung-von-datenbanken-aus-einem-backup/ Tue, 07 Dec 2021 11:17:34 +0000 https://danielgutermuth.de/?p=676 Nachdem bereits eine Lösung für ein automatisches Backup von SQL Datenbanken vorgestellt wurde, geht es in diesem Beitrag um die Wiederherstellung mehrerer SQL Datenbanken aus [...]

Der Beitrag SQL Server – Wiederherstellung von Datenbanken aus einem Backup erschien zuerst auf Daniel Gutermuth.

]]>
Nachdem bereits eine Lösung für ein automatisches Backup von SQL Datenbanken vorgestellt wurde, geht es in diesem Beitrag um die Wiederherstellung mehrerer SQL Datenbanken aus einem Backup mittels Script.

Lösung

Über das SQL Management Studio mit dem SQL-Server verbinden und mit einem Rechtklick den Punkt Neue Abfrage wählen.

Hinweis: Der Benutzer muss mindestens Rechte als dbcreator besitzen.

Das unten stehende SQL-Script in das Abfragefenster kopieren und die drei Parameter anpassen.

  • SET @backuppath = ‚BACKUPPATH
  • SET @datapath = ‚DATAPATH‘
  • SET @logpath = ‚LOGPATH
DECLARE @name VARCHAR(256) -- database name  
DECLARE @backuppath NVARCHAR(256) -- path for backup files  
DECLARE @datapath VARCHAR(256) -- path for data files  
DECLARE @logpath VARCHAR(256) -- path for log files  
DECLARE @backupfileName VARCHAR(256) -- filename for backup  
DECLARE @datafileName VARCHAR(256) -- filename for database 
DECLARE @logfileName VARCHAR(256) -- filename for logfile 
DECLARE @logName VARCHAR(256) -- filename for logfile 

-- specify database backup directory 
print 'backup path is ' + @backuppath 
print 'data path is ' + @datapath 
print 'log path is ' + @logpath 

--Table to hold each backup file name in 
DROP TABLE #files -- remove any previous instance 
CREATE TABLE #files(fname varchar(200),depth int, file_ int) 
INSERT #files 
EXECUTE master.dbo.xp_dirtree @backuppath, 1, 1 
SELECT * FROM #files 
DECLARE files CURSOR FOR 
SELECT fname FROM #files  
OPEN files 
FETCH NEXT FROM files INTO @name
WHILE @@FETCH_STATUS = 0   

BEGIN 
DECLARE @cleanname AS VARCHAR(255) 
SET @cleanname  = REPLACE(@name, '.BAK', '') 
PRINT @cleanname 
SET @backupfileName = @backuppath + @name 
SET @datafileName = @datapath + @cleanname   + '.MDF' 
SET @logfileName = @logpath + @cleanname   + '_log.LDF' 
SET @logName = @cleanname + '_log' 
print 'backup file is ' + @backupfileName 
print 'data file is ' + @datafileName 
print 'log file is ' + @logfileName 
RESTORE DATABASE @cleanname 
FROM DISK = @backupfileName 
WITH RECOVERY, 
MOVE @cleanname 
TO @datafileName, 
MOVE @logName 
TO @logfileName 
FETCH NEXT FROM files INTO @name   
END

CLOSE files   
DEALLOCATE files 

Hier ein Beispiel:

Wurde das Script angepasst, wird es mit einem Klick auf Ausführen gestartet.

Je nach Umfang und Größe der wiederherzustellenden Datenbanken, kann es eine Weile dauern, bis die Wiederherstellung abgeschlossen wurde.

Im Fenster Meldungen können aktuelle Logs betrachtet werden.

Nachdem das Script durchlaufen und alle Datenbanken wiederhergestellt wurden, sind diese im Objekt-Explorer zu finden.

Der Beitrag SQL Server – Wiederherstellung von Datenbanken aus einem Backup erschien zuerst auf Daniel Gutermuth.

]]>
SQL Server – Automatisches Backup von Datenbanken https://danielgutermuth.de/microsoft/windowsserver/sql-server-automatisches-backup-von-datenbanken/ Tue, 30 Nov 2021 22:10:29 +0000 http://danielgutermuth.de/?p=100 Für Backups der SQL-Datenbanken können die SQL-Server Bordmittel verwendet werden. Die hier gezeigte Methode sichert die SQL-Datenbanken täglich auf eine Netzwerkfreigabe. Für das Wiederherstellen der [...]

Der Beitrag SQL Server – Automatisches Backup von Datenbanken erschien zuerst auf Daniel Gutermuth.

]]>
Für Backups der SQL-Datenbanken können die SQL-Server Bordmittel verwendet werden.

Die hier gezeigte Methode sichert die SQL-Datenbanken täglich auf eine Netzwerkfreigabe.

Für das Wiederherstellen der Datenbanken eignet sich die Methode hier.

Lösung

Das SQL Management Studio öffnen und mit dem SQL-Server verbinden.

Hinweis: Der für das weitere Vorgehen verwendete Benutzer muss Schreibrechte auf der Netzwerkfreigabe besitzen, sowie Leserechte auf den Datenbanken.

Anschließend, wenn nicht schon passiert, den SQL Server-Agent starten und mit einem Rechtsklick auf Aufträge den Punkt Neuer Auftrag wählen.

Im Reiter Allgemein einen Namen vergeben und in den Reiter Schritte wechseln.

Dort auf Neu klicken und im neuen Fenster einen Schrittnamen vergeben. Anschließend den Code aus SQL Backup Skript – Netzwerkfreigabe einfügen (den Backup-Pfad natürlich ändern) und mit OK bestätigen.

DECLARE @name NVARCHAR(256) -- database name  
DECLARE @path NVARCHAR(512) -- path for backup files  
DECLARE @fileName NVARCHAR(512) -- filename for backup  
DECLARE @fileDate NVARCHAR(40) -- used for file name
 
-- specify database backup directory
SET @path = '\\smbshare\sicherung\sql\'  
 
-- specify filename format
SELECT @fileDate = CONVERT(NVARCHAR(20),GETDATE(),112) + '_' + REPLACE(CONVERT(NVARCHAR(20),GETDATE(),108),':','')
 
DECLARE db_cursor CURSOR READ_ONLY FOR  
SELECT name 
FROM master.sys.databases 
WHERE name NOT IN ('master','model','msdb','tempdb')  -- exclude these databases
AND state = 0 -- database is online
AND is_in_standby = 0 -- database is not read only for log shipping
 
OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @name   
 
WHILE @@FETCH_STATUS = 0   
BEGIN   
   SET @fileName = @path + @name + '_' + @fileDate + '.BAK'  
   BACKUP DATABASE @name TO DISK = @fileName  
 
   FETCH NEXT FROM db_cursor INTO @name   
END   
 
CLOSE db_cursor   
DEALLOCATE db_cursor

Im Reiter Zeitpläne auf Neu klicken und einen Auftragszeitplan erstellen. In diesem Fall täglich um 18Uhr.

Optionales

Es besteht die Möglichkeit die Sicherung nicht nur auf eine Netzwerkfreigabe durchzuführen, sondern auch lokal. Dafür muss ein zweiter Auftragsschritt erstellt werden und der Backup-Pfad im SQL-Script geändert werden.

-- specify database backup directory<br>SET @path = 'B:\Backup'

Außerdem kann in den Auftragseigenschaften eine E-Mail Benachrichtigung über den Auftragsstatus eingerichtet werden.

Dazu in die Auftragseigenschaften gehen und im Reiter Warnungen den Punkt Hinzufügen wählen. Dort einen Namen vergeben.

In den Reiter Antwort wechseln und dort unter Operatoren benachrichtigen den Punkt E-Mail für den entsprechenden Operator aktivieren.

Zuletzt in Optionen den Punkt E-Mail aktivieren und alle Fenster mit OK schließen.

Der Beitrag SQL Server – Automatisches Backup von Datenbanken erschien zuerst auf Daniel Gutermuth.

]]>