Empfehlung Backupsoftware für MS-SQL-Datenbank
Hi,
bin auf der suche nach eine Günstigen Backupsoftware für eine Microsoft SQL-Datenbank zu sichern. Am liebsten wäre mir eine Freeware.
Habe zwar einiges gefunden das über PowerShell gemacht wird. Aber davon habe ich wenig Ahnung. Vielleicht hat jemand ein Skript mit dem ich alles sichern kann.#
Danke schon mal im Voraus
Wolf6660
bin auf der suche nach eine Günstigen Backupsoftware für eine Microsoft SQL-Datenbank zu sichern. Am liebsten wäre mir eine Freeware.
Habe zwar einiges gefunden das über PowerShell gemacht wird. Aber davon habe ich wenig Ahnung. Vielleicht hat jemand ein Skript mit dem ich alles sichern kann.#
Danke schon mal im Voraus
Wolf6660
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 855352938
Url: https://administrator.de/contentid/855352938
Ausgedruckt am: 19.12.2024 um 03:12 Uhr
13 Kommentare
Neuester Kommentar
Batch wirst du schon hinbekommen:
https://docs.microsoft.com/de-de/troubleshoot/sql/admin/schedule-automat ...
https://docs.microsoft.com/de-de/troubleshoot/sql/admin/schedule-automat ...
Hallo,
Gruß,
Peter
Zitat von @Wolf6660:
bin auf der suche nach eine Günstigen Backupsoftware für eine Microsoft SQL-Datenbank zu sichern. Am liebsten wäre mir eine Freeware.
Robocopy?bin auf der suche nach eine Günstigen Backupsoftware für eine Microsoft SQL-Datenbank zu sichern. Am liebsten wäre mir eine Freeware.
Gruß,
Peter
Moin,
falls es etwas Powershell und OnBoard Mittel sein darf: https://www.b-blog.info/de/sichern-der-ms-sql-einschlie-lich-express-dat ...
Gruß,
Dani
falls es etwas Powershell und OnBoard Mittel sein darf: https://www.b-blog.info/de/sichern-der-ms-sql-einschlie-lich-express-dat ...
Gruß,
Dani
also die älteren Express Editions hatten noch einen Agenten, über den man Backupjobs anstoßen konnte, aber die aktuellen Editions kommen ohne daher, folglich auch keine Automatisierungsmöglichkeiten mehr dort mit Bordmitteln.
Was aber ALLE Express Editions können ist eine SQL Shell mit dem Namen SQLCMD und darin das Kommando Backup Database <parameter> ausführen, das Kommando konfiguriert man dann in die Windows Aufgabenplanung rein wenn der installierte SQL Server kein Agentenkonto mehr hat. Standardmäßig geht das über einen Wartungsplan... aber das fehlt entweder im SSMS 18.4 und höher oder die Express
https://docs.microsoft.com/de-de/sql/t-sql/statements/backup-transact-sq ...
https://forums.ivanti.com/s/article/How-To-Create-a-Maintenance-Plan-for ....
Was aber ALLE Express Editions können ist eine SQL Shell mit dem Namen SQLCMD und darin das Kommando Backup Database <parameter> ausführen, das Kommando konfiguriert man dann in die Windows Aufgabenplanung rein wenn der installierte SQL Server kein Agentenkonto mehr hat. Standardmäßig geht das über einen Wartungsplan... aber das fehlt entweder im SSMS 18.4 und höher oder die Express
https://docs.microsoft.com/de-de/sql/t-sql/statements/backup-transact-sq ...
https://forums.ivanti.com/s/article/How-To-Create-a-Maintenance-Plan-for ....
Guten Morgen,
sollte auch auf höheren Versionen laufen: SQL Express Backup .
Ich habe mir das Backup erweitert mit blat.exe (E-Mail versand) und delage32.exe um die Backups zu rotieren.
Lief zuletzt auf dem MSSQL 2012.
grüße vom it-frosch
sollte auch auf höheren Versionen laufen: SQL Express Backup .
USE [master]
GO
/**** Object: StoredProcedure [dbo].[sp_BackupDatabases] Script Date: 04/02/2015 16:29:49 ****/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Microsoft
-- Create date: 2010-02-06
-- Description: Backup Databases for SQLExpress
-- Parameter1: databaseName
-- Parameter2: backupType F=full, D=differential, L=log
-- Parameter3: backup file location
-- =============================================
CREATE PROCEDURE [dbo].[sp_BackupDatabases]
@databaseName sysname = null,
@backupType CHAR(1),
@backupLocation nvarchar(200)
AS
SET NOCOUNT ON;
DECLARE @DBs TABLE
(
ID int IDENTITY PRIMARY KEY,
DBNAME nvarchar(500)
)
-- Pick out only databases which are online in case ALL databases are chosen to be backed up
-- If specific database is chosen to be backed up only pick that out from @DBs
INSERT INTO @DBs (DBNAME)
SELECT Name FROM master.sys.databases
where state=0
AND name=@DatabaseName
OR @DatabaseName IS NULL
ORDER BY Name
-- Filter out databases which do not need to backed up
IF @backupType='F'
BEGIN
DELETE @DBs where DBNAME IN ('tempdb','Northwind','pubs','AdventureWorks')
END
ELSE IF @backupType='D'
BEGIN
DELETE @DBs where DBNAME IN ('tempdb','Northwind','pubs','master','AdventureWorks')
END
ELSE IF @backupType='L'
BEGIN
DELETE @DBs where DBNAME IN ('tempdb','Northwind','pubs','master','AdventureWorks')
END
ELSE
BEGIN
RETURN
END
-- Declare variables
DECLARE @BackupName varchar(100)
DECLARE @BackupFile varchar(100)
DECLARE @DBNAME varchar(300)
DECLARE @sqlCommand NVARCHAR(1000)
DECLARE @dateTime NVARCHAR(20)
DECLARE @Loop int
-- Loop through the databases one by one
SELECT @Loop = min(ID) FROM @DBs
WHILE @Loop IS NOT NULL
BEGIN
-- Database Names have to be in [dbname] formate since some have - or _ in their name
SET @DBNAME = '['+(SELECT DBNAME FROM @DBs WHERE ID = @Loop)+']'
-- Set the current date and time n yyyyhhmmss format
SET @dateTime = REPLACE(CONVERT(VARCHAR, GETDATE(),101),'/',) + '_' + REPLACE(CONVERT(VARCHAR, GETDATE(),108),':',)
-- Create backup filename in path\filename.extension format for full,diff and log backups
IF @backupType = 'F'
SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',),']',)+ '_FULL_'+ @dateTime+ '.BAK'
ELSE IF @backupType = 'D'
SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',),']',)+ '_DIFF_'+ @dateTime+ '.BAK'
ELSE IF @backupType = 'L'
SET @BackupFile = @backupLocation+REPLACE(REPLACE(@DBNAME, '[',),']',)+ '_LOG_'+ @dateTime+ '.TRN'
-- Provide the backup a name for storing in the media
IF @backupType = 'F'
SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',),']',) +' full backup for '+ @dateTime
IF @backupType = 'D'
SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',),']',) +' differential backup for '+ @dateTime
IF @backupType = 'L'
SET @BackupName = REPLACE(REPLACE(@DBNAME,'[',),']',) +' log backup for '+ @dateTime
-- Generate the dynamic SQL command to be executed
IF @backupType = 'F'
BEGIN
SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+ ' TO DISK = '+@BackupFile+ ' WITH INIT, NAME= ' +@BackupName+', NOSKIP, NOFORMAT'
END
IF @backupType = 'D'
BEGIN
SET @sqlCommand = 'BACKUP DATABASE ' +@DBNAME+ ' TO DISK = '+@BackupFile+ ' WITH DIFFERENTIAL, INIT, NAME= ' +@BackupName+', NOSKIP, NOFORMAT'
END
IF @backupType = 'L'
BEGIN
SET @sqlCommand = 'BACKUP LOG ' +@DBNAME+ ' TO DISK = '+@BackupFile+ ' WITH INIT, NAME= ' +@BackupName+', NOSKIP, NOFORMAT'
END
-- Execute the generated SQL command
EXEC(@sqlCommand)
-- Goto the next database
SELECT @Loop = min(ID) FROM @DBs where ID>@Loop
END
GO
Ich habe mir das Backup erweitert mit blat.exe (E-Mail versand) und delage32.exe um die Backups zu rotieren.
Lief zuletzt auf dem MSSQL 2012.
grüße vom it-frosch
Hi,
ich habe das damals bei einem 2008er so gemacht:
SQLCMD bei Express-Version:
SQLCMD bei normalem SQL Server 2008 (ab Standard):
7z-Archiver, wenn man die Exporte shrinken will:
Ich hatte zwei SQL-Scripts pro Durchgang gefeuert:
Script 1:
Script 2:
Das eine Script kümmert sich um Datenbanken, die mit Transaction-Logs arbeiten und shrinkt diese. Das andere tut das nicht.
Vielleicht hilft es Dir ja.
Wichtig: Erst anpassen und in gesicherter Testumgebung probieren.
Gruß
bdmvg
ich habe das damals bei einem 2008er so gemacht:
SQLCMD bei Express-Version:
sqlcmd -S localhost\Instanzenname -i c:\sqldatei.sql -o d:\ausgabe.log -b
SQLCMD bei normalem SQL Server 2008 (ab Standard):
sqlcmd -S Servername\Instanz -U sa -P sa -i c:\sqldatei.sql -o d:\ausgabe.log -b
7z-Archiver, wenn man die Exporte shrinken will:
7za.exe a -r -t7z -mx9 -mmt2 d:\zielarchiv.7z d:\quellverzeichnis\*.*
Ich hatte zwei SQL-Scripts pro Durchgang gefeuert:
Script 1:
use master;
go
DECLARE UserDatabases_CTE_Cursor Cursor
FOR
-- Selecting user database names.
select name as DatabaseName from sys.sysdatabases where ([dbid] > 4) and ([name] not like '$')
OPEN UserDatabases_CTE_Cursor
DECLARE @dbName varchar(100);
DECLARE @backupPath varchar(100);
DECLARE @backupQuery varchar(500);
-- make sure that the below path exists
set @backupPath = 'C:\DBBACKUP\'
Fetch NEXT FROM UserDatabases_CTE_Cursor INTO @dbName
While (@@FETCH_STATUS <> -1)
BEGIN
-- Backup SQL statement
set @backupQuery = 'backup database ' + @dbName + ' to disk = ''' + @backupPath + @dbName + '_[' + REPLACE( convert(varchar, getdate(), 109), ':', '-') + '].bak'''
-- Print SQL statement
print @backupQuery
-- Execute backup script
EXEC (@backupQuery)
-- Get next database
Fetch NEXT FROM UserDatabases_CTE_Cursor INTO @dbName
END
CLOSE UserDatabases_CTE_Cursor
DEALLOCATE UserDatabases_CTE_Cursor
GO
Script 2:
DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
SET @path = 'C:\DBBACKUP\'
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
+ '_'
+ REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','')
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')
AND DATABASEPROPERTYEX(name, 'Recovery') IN ('FULL','BULK_LOGGED')
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.TRN'
--BACKUP LOG @name TO DISK = @fileName WITH TRUNCATE_ONLY
BACKUP LOG @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
Das eine Script kümmert sich um Datenbanken, die mit Transaction-Logs arbeiten und shrinkt diese. Das andere tut das nicht.
Vielleicht hilft es Dir ja.
Wichtig: Erst anpassen und in gesicherter Testumgebung probieren.
Gruß
bdmvg
https://sqlbackupandftp.com/
Die obige Software macht IMHO nichts anderes, wie die Boardmittel des SQL-Servers zu nutzen.
Ist halt weniger getippe und mehr geklicke (im Sinne von GUI-Nutzung, nicht zu vieles geklicke).
Das mit den Bachtes werde ich mal testen falls es mit dem Programm Backup&FTP nicht funktioniert. Auf der grafischen Oberfläche fühle ich mich sicherer, mit den CMD Skripten bin ich nicht so fit und würde nur abschreiben ohne zu wissen was es wirklich bewirkt. Wenn es um Rücksicherungen geht ist die Grafische Oberfläche eventuell auch einfacher.
Danke
Danke
Die obige Software macht IMHO nichts anderes, wie die Boardmittel des SQL-Servers zu nutzen.
Ist halt weniger getippe und mehr geklicke (im Sinne von GUI-Nutzung, nicht zu vieles geklicke).