Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

T-SQL - Backup mit Variablen

Frage Entwicklung Datenbanken

Mitglied: kallewirsch

kallewirsch (Level 1) - Jetzt verbinden

31.08.2009, aktualisiert 13:57 Uhr, 11075 Aufrufe, 9 Kommentare

Hallo Forum,
ich möchte jede Nacht ein Full-Backup einer oder mehrerer Datenbanken ins File-System laufen lassen. Griundsätzlich funktioniert das gesamte Vorgehen über die SQL-Jobs perfekt. Leider habe ich keine Möglichkeit gefunden, den Dateinamen des Backups zu variabilisieren nach folgendem Muster: \\LW\Verzeichnis\DBName_data_backup_JHJJMMTT_HHMMSS.dmp.
Nun habe ich versucht, nach guter alter Dos-Manier dieses umsetzen:

Declare @dt as char(15);
Declare @FileName as char(99);

Set @dt =(replace(str(DatePart(YYYY, GetDate()), 4), ' ', '0') +
replace(str(DatePart(MM, GetDate()), 2), ' ', '0') +
replace(str(DatePart(DD, GetDate()), 2), ' ', '0') + '_' +
replace(str(DatePart(hh, GetDate()), 2), ' ', '0') +
replace(str(DatePart(mi, GetDate()), 2), ' ', '0') +
replace(str(DatePart(s, GetDate()), 2), ' ', '0'))

PRINT @dt /* Aufbau der Variablen datetime JHJJMMDD_HHMMSS */

SET @FileName='E:\Backup\DBName_DATA_backup.dmp' + '_' + '@dt' /*Versehen des Dateinamens mit der Variablen */

PRINT @FileName

BACKUP DATABASE [Pflegetool] TO DISK = N'@FileName' WITH NOINIT , NOUNLOAD , NAME = N'Pflegetool Data Sicherung', NOSKIP , STATS = 10, NOFORMAT

Der Print @Filename-Befehl funktioniert sauber, nur löst er den Befehl nicht im Backup Database-Statement aus.

Kann mir jemand hierzu helfen?

Viele Grüße und besten Dank im Voraus

Kallewirsch
Mitglied: AndreasHoster
31.08.2009 um 15:52 Uhr
Versuch mal:
01.
BACKUP DATABASE [Pflegetool] TO DISK = @FileName WITH NOINIT , NOUNLOAD , NAME = N'Pflegetool Data Sicherung', NOSKIP , STATS = 10, NOFORMAT 
Mit '@FileName' übergibst Du die Zeichenfolge @FileName, nicht den Inhalt der Variablen @FileName.
Bitte warten ..
Mitglied: kallewirsch
02.09.2009 um 13:34 Uhr
Hallo AndreasHoster,

vielen Dank für Deine funktionierende Antwort. Eigentlich war ich der Meinung, das ich das auch asuprobiert hatte, aber egal.

Es tut nun genau das was es soll, super.

Viele Grüße

Kallewirsch
Bitte warten ..
Mitglied: fersl66
28.10.2009 um 13:36 Uhr
Die Zeile Print @FileName gibt bei mir folgendes aus: E:\Backup\DBName_DATA_backup.dmp_@dt
Wie muss ich vorgehen, wenn ich die Variable vor dem Punkt im Dateinamen stehen haben will?
Print @dt klappt sauber
Probiere das an einem SQL 2005 aus
Geht auch an einem SQL 2008 nicht
Hab schon diverse Dinge probiert aber das klappt nicht

Für mioch wäre das sehr hilfreich, weil ich ein Backup des Transaktionslogs einer Datenbank, die im Modus 70 läuft (also nix mit Wartungsplan) stündlich backupen will.
Damit das File nicht jedesmal überschriebn wird, brauche ich einen Zeitstempel.

Mit folgendem Skript startet bei mit das Backup als SQL-Auftrag:

BACKUP LOG [cipkom] TO DISK = N'D:\MSSQLDB\MSSQL.1\MSSQL\Backup\cipkom\cipkom_backup.trn' WITH NOFORMAT, NOINIT, NAME = N'Cipkom Logsicherung', SKIP, REWIND, NOUNLOAD, STATS = 10
GO
declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N'cipkom' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'cipkom' )
if @backupSetId is null begin raiserror(N'Fehler beim Überprüfen. Sicherungsinformationen für die cipkom-Datenbank wurden nicht gefunden.', 16, 1) end
RESTORE VERIFYONLY FROM DISK = N'D:\MSSQLDB\MSSQL.1\MSSQL\Backup\cipkom\cipkom_backup.trn' WITH FILE = @backupSetId, NOUNLOAD, NOREWIND
GO
Bitte warten ..
Mitglied: kallewirsch
28.10.2009 um 15:02 Uhr
Hi fersl66,

die Deklaration der Zeile SET @FileName='E:\Backup\ZDB_ZZ10_DATA_backup.dmp_' +@dt sollte genau so aussehen. Hast Du möglicherweise die einfachen Brackets weggelassen? Bitte einmal dieses überprüfen.

Viele Grüße

Kallewirsch
Bitte warten ..
Mitglied: fersl66
28.10.2009 um 18:23 Uhr
Ha llo Kallewirsch,

Danke für die schnelle Antwort!
Habe nix vergessen im Skript, habe direkt aus dem Eintrag kopiert um zu testen.
Das Backup wird auch geschrieben, nur heißt die Datei halt ZDB_ZZ10_DATA_backup.dmp_20091028....
Ist halt nicht fein, weil durch das Ändern der DAteiendung das etwas verwirrend ist.
Im Prinzip hätte ich das gerne so wie der WArtungsplan vom SQL-Server das macht. "Db-Name_Zeitstempel.trn"

Viele Grüße
Christian
Bitte warten ..
Mitglied: AndreasHoster
29.10.2009 um 08:53 Uhr
Natürlich wird das Datum hinten angehängt, wenn man die Variable hinten anhängt.
Dann hängt man das halt in der Mitte an:
01.
SET @FileName='E:\Backup\DBName_DATA_backup_'+@dt+'.dmp'
Name so ändern wie man es halt haben will.
Bitte warten ..
Mitglied: kallewirsch
29.10.2009 um 13:24 Uhr
Hallo AndreasHoster,

völlig korrekt. Wo der Timestamp im Backupdateinamen steht, wird einzig durch die Platzierung der Variablen '+@dt' bestimmt. Was danach kommt, ist absolutes persönliches Gusto....

Viel Spaß beim Ausprobieren.

Kallewirsch
Bitte warten ..
Mitglied: fersl66
30.10.2009 um 13:34 Uhr
Also das klappt immer noch nicht so, wie ich das will, aber ich teste weiter.

Ich setze folgendes Skript ab:

01.
Declare @dt as char(15); 
02.
Declare @FileName as char(150); 
03.
Declare @dbname as char(30); 
04.
 
05.
set @dbname = N'cipkom' 
06.
Set @dt =(replace(str(DatePart(YYYY, GetDate()), 4), ' ', '0') +  
07.
replace(str(DatePart(MM, GetDate()), 2), ' ', '0') + 
08.
replace(str(DatePart(DD, GetDate()), 2), ' ', '0') + '_' + 
09.
replace(str(DatePart(hh, GetDate()), 2), ' ', '0') +  
10.
replace(str(DatePart(mi, GetDate()), 2), ' ', '0') + 
11.
replace(str(DatePart(s, GetDate()), 2), ' ', '0')) 
12.
 
13.
SET @FileName='D:\MSSQLDB\MSSQL10.MSSQLSERVER\MSSQL\Backup\'+@dbname+'\'+@dbname+'_DATA_backup'+@dt+'.dmp'  
14.
 
15.
PRINT @dt  
16.
PRINT @dbname 
17.
PRINT @FileName
Das Ganze gibt folgendes Ergebnis:

01.
20091030_133403 
02.
cipkom                         
03.
D:\MSSQLDB\MSSQL10.MSSQLSERVER\MSSQL\Backup\cipkom                        \cipkom                        _DATA_backup20091030_133403.dmp              
Vom Prinzip her richtig, aber wo kommen die vielen Leerzeichen her?
Also das sind genau die 30 Zeichen mit denen die Variable @dbname declariert wird, das ist mir schon kalr, aber warum wird mir hier im Beispiel cipkom + 24 Leerzeichen ausgegeben?

Gibt es eigentlich eine Variable, die den Standardbackuppfad des Servers ausgibt?
Ich hätte halt gerne ein Skript, bei dem ich nur den DB-Namen eingebe und der Rest aus Variablen bezogen wird.
Bitte warten ..
Mitglied: fersl66
30.10.2009 um 13:53 Uhr
Update:

Bei Declare mit varchar definieren dann gehts zumindest mit der Ausgabe: Schaut dann so aus:
Hätte ich früher drauf kommen können :-P

01.
20091030_134926 
02.
cipkom 
03.
D:\MSSQLDB\MSSQL10.MSSQLSERVER\MSSQL\Backup\cipkom\cipkom_DATA_backup_20091030_134926.trn
Muss ich nur noch im Skript das Backup suaber zum Laufen bringen.

01.
BACKUP LOG cipkom TO  DISK = N'@filename' WITH NOFORMAT, INIT,  NAME = N'cipkom-Transaktionsprotokoll  Sichern', SKIP, NOREWIND, NOUNLOAD,  STATS = 10 
02.
GO 
03.
declare @backupSetId as int 
04.
select @backupSetId = position from msdb..backupset where database_name=N'cipkom' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'cipkom' ) 
05.
if @backupSetId is null begin raiserror(N'Fehler beim Überprüfen. Sicherungsinformationen für die cipkomo-Datenbank wurden nicht gefunden.', 16, 1) end 
06.
RESTORE VERIFYONLY FROM  DISK = N'@filename' WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND 
07.
GO
Das Backup schriebt mit im Ordner D:\MSSQLDB\MSSQL10.MSSQLSERVER\MSSQL\Backup\ eine Datei @filename

Melde mich wieder
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MS-SQL-Server + T-SQL+Batch
Frage von kallewirschDatenbanken4 Kommentare

Hallo Gemeinde, mal wieder ein Problem aus dem Bereich des MS-SQL-Servers. Folgendes Thema: Nachts sollen automatisch Backups der DBen ...

Windows Server
SQL: SQLCMD-Ausgabe als Variable
Frage von berlingerWindows Server2 Kommentare

Hallo Zusammen Ich bin auf der Suche nach einer schlauen Lösung und komme nicht weiter. Ich möchte gerne via ...

Backup
FTP und SQL Backup vom Webserver
gelöst Frage von DPiegzaBackup4 Kommentare

Hallo zusammen, Ich habe einen Webshop bei 1&1 und möchte eine voll automatische Sicherung von den Dateien und der ...

Windows Server
Backup von SQL-Datenbanken auf einem Netzwerkshare!
gelöst Frage von gmeurbWindows Server10 Kommentare

Hallo, ich nutze hier einen SQL Server 2008 R2 und möchte Backups auf einen Netzwerkshare durchführen. Die Backups laufen ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 14 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 17 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...