biot3ch 10 Geschrieben 15. September 2004 Melden Teilen Geschrieben 15. September 2004 Hi, Ich habe hier ein kleines Problem mit einem TRANSACT SQL Script für die Datensicherung. Das Script soll an die Sicherungsdateien einen Timestamp anhängen. Beim Analysieren des Scripts wird folgender Fehler angezeigt: Die folgenden Syntaxfehler wurden in dem Befehl festgestellt: Fehler 170: Zeile 1: Falsche Syntax in der Nähe von ' '. Die Varable '@BackupDirectory' muss deklariert werden. Die Varable '@DBName' muss deklariert werden. Die Varable '@DBName' muss deklariert werden. Hier das Script: DECLARE @DBName_ nvarchar(256) DECLARE @FileName_ nvarchar(512) DECLARE @BackupDirectory_ varchar(128) SET NOCOUNT ON SELECT @BackupDirectory = 'd::\dumps' SELECT @DBName = DB_NAME(), @FileName = @BackupDirectory + '\' + DB_NAME() + REPLACE(REPLACE(CONVERT(CHAR(19), GETDATE(),120), ' ', '_'), ':', '-') + '.BAK' BACKUP LOG @DBName TO DISK = @FileName WITH _ NOINIT, NOUNLOAD ,, AME = N'dbname Sicherung', NOSKIP, NOFORMAT Danke für die Hilfe!! Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 15. September 2004 Melden Teilen Geschrieben 15. September 2004 DECLARE @DBName_ nvarchar(256)DECLARE @FileName_ nvarchar(512)DECLARE @BackupDirectory_ varchar(128)SET NOCOUNT ONSELECT @BackupDirectory = 'd::\dumps'SELECT @DBName = DB_NAME(),@FileName = @BackupDirectory + '\' + DB_NAME() +REPLACE(REPLACE(CONVERT(CHAR(19), GETDATE(),120), ' ', '_'), ':', '-') + '.BAK'BACKUP LOG @DBName TO DISK = @FileName WITH _ NOINIT, NOUNLOAD ,, AME = N'dbname Sicherung', NOSKIP, NOFORMAT[/Code] Du solltest in der Deklaration der drei Variablen die [Code]_[/Code] am Ende wegnehmen. Sieht dann so aus: [Code]DECLARE @DBName nvarchar(256)DECLARE @FileName nvarchar(512)DECLARE @BackupDirectory varchar(128)SET NOCOUNT ONSELECT @BackupDirectory = 'd::\dumps'SELECT @DBName = DB_NAME(),@FileName = @BackupDirectory + '\' + DB_NAME() +REPLACE(REPLACE(CONVERT(CHAR(19), GETDATE(),120), ' ', '_'), ':', '-') + '.BAK'BACKUP LOG @DBName TO DISK = @FileName WITH _ NOINIT, NOUNLOAD ,, AME = N'dbname Sicherung', NOSKIP, NOFORMAT[/Code] Ich denke mal das dir die _ das Genick gebrochen haben. Desweiteren: Ist es richtig das du sagst [Code]SELECT @BackupDirectory = 'd::\dumps'[/Code] und nicht nur [Code]SELECT @BackupDirectory = 'd:\dumps'[/Code] ??? Gruss Carsten Zitieren Link zu diesem Kommentar
biot3ch 10 Geschrieben 15. September 2004 Autor Melden Teilen Geschrieben 15. September 2004 ja genau, hast recht. die _ wurden im editor aber gar nicht angezeigt. :suspect: ich hab aber den rest soweit korrigiert. jetzt sieht's so aus: DECLARE @DBName nvarchar(256) DECLARE @FileName nvarchar(512) DECLARE @BackupDirectory varchar(128) SET NOCOUNT ON SELECT @BackupDirectory = 'd:\dumps' SELECT @DBName = DB_NAME(), @FileName = @BackupDirectory + '\' + DB_NAME() + REPLACE(REPLACE(CONVERT(CHAR(19), GETDATE(),120), ' ', '_'), ':', '-') + '.BAK' BACKUP LOG @DBName TO DISK = @FileName WITH NOINIT, NOUNLOAD , NAME = 'dbname Sicherung', NOSKIP, NOFORMAT und im eventlog wird folgender fehler angezeigt: 3041 : BACKUP-Fehler beim Abschluss des DECLARE @DBName nvarchar(256) DECLARE @FileName nvarchar(512) DECLARE @BackupDirectory varchar(128) SET NOCOUNT ON SELECT @BackupDirectory = 'd:\dumps' SELECT @DBName = DB_NAME(), @FileName = @BackupDirectory + '\' + DB_NAME() + REPLACE(REPLACE(CON-Befehls sorry bin eben sql newbie Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 15. September 2004 Melden Teilen Geschrieben 15. September 2004 Ist das die vollständige Fehlermeldung? Zitieren Link zu diesem Kommentar
biot3ch 10 Geschrieben 15. September 2004 Autor Melden Teilen Geschrieben 15. September 2004 da gibt's noch einen 2ten eintrag: SQL Server Scheduled Job 'test' (0x16ADEE51E83B11439B6777ABD74B0EBC) - Status: Fehler - Invoked on: 2004-09-15 13:52:58 - Message: Auftragsfehler Der Auftrag wurde von Benutzer xxxxxx aufgerufen. Als Letztes wurde Schritt 1 (schritt1) ausgeführt. mehr steht da aber nicht Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 15. September 2004 Melden Teilen Geschrieben 15. September 2004 Die erste Fehlermeldung wurde irgendwie abgeschnitten. Kannst du die bitte nochmal vollständig posten? Danke Zitieren Link zu diesem Kommentar
biot3ch 10 Geschrieben 15. September 2004 Autor Melden Teilen Geschrieben 15. September 2004 sorry, aber da steht wirklich nicht mehr drin. das ist genau die fehlermeldung die im eventlog und auch im sql-server protokoll steht. ich hab auch mehrmals versucht das script auszuführen, aber die fehlermeldung sieht eben immer genau so aus. aber vielleicht bin ich generell auf dem falschen weg..... ich versuche eben rauszufinden wie ich am besten die transaktionslogs sichere. vielleicht kannst du auch mal einen blick hier rein werfen: http://www.mcseboard.de/showthread.php?s=&threadid=39433 thx Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 15. September 2004 Melden Teilen Geschrieben 15. September 2004 Warum machst du das Backup der DB's nicht über den Enterprise Manager des SQL-Servers? Dann wird die DB zusammen mit ihrem jeweiligen Log gesichert und das ganze kannst du dann per Backupsoftware / Dienst auf Band oder einen andren Server sichern. Damit umgehst du die meisten Probleme und dafür ist das ganze ja auch da. Zitieren Link zu diesem Kommentar
biot3ch 10 Geschrieben 15. September 2004 Autor Melden Teilen Geschrieben 15. September 2004 darum geht es mir eigentlich auch. ich mache ja diese sicherungen mit dem enterprise-manager, jedoch bin ich mir nicht sicher ob ich auch alles richtig konfiguriert habe. vollständige db sicherungen werden in der nacht erstellt. zuerst auf festplatte und anschließend werden diese dateien auf band geschrieben. diese db sicherungen kann ich ohne probleme einspielen. soweit alles ok. die transaktionslog sicherungen werden stündlich erstellt. ebenfalls auf platte, jedoch werden diese nicht stündlich auf band geschrieben. und soweit ich das beobachte wird dann jede stunde die vorherige sicherung wieder überschrieben ?! also kann ich die transaktionslog sicherungen gar nicht verwenden, oder sehe ich da was falsch ? ich weiss aber nicht wie man das richtig konfiguriert und daher dachte ich wäre es sinnvoll pro log einen eindeutigen dateinamen zu vergeben (script). aber irgenwie muss das doch einfacher zu lösen sein. kann man das nicht einstellen, dass die transaktionslog sicherung kumulativ geschrieben werden ? dann könnte ich z.b. in der nacht eine vollständige sicherung auf band schreiben und mittags die transaktionslogs... Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 15. September 2004 Melden Teilen Geschrieben 15. September 2004 Hm, seh ich das richtig, das dein Vorgänger dir keinerlei Doku über die jetzigen Systeme hinterlassen hat? Ich muss ehrlich sagen, das ich damit überfragt bin. Bin ja eigentlich kein Admin sondern Entwickler, aber solange ich Auskunft geben kann mach ich das. Ich will dich aber jetzt auch auf keinen falschen Weg bringen, indem ich irgendwelche Mutmassungen anstelle. Zitieren Link zu diesem Kommentar
biot3ch 10 Geschrieben 15. September 2004 Autor Melden Teilen Geschrieben 15. September 2004 also mein "vorgänger" hat recht plötzlich das unternehmen verlassen und dokus gibt es keine. nun soll ich das system überarbeiten, qualifizieren und auch dokumentieren und dabei hab ich keine sql erfahrung naja trotzdem thx. vielleicht hat ja noch jemand anders ne idee ?! Zitieren Link zu diesem Kommentar
biot3ch 10 Geschrieben 16. September 2004 Autor Melden Teilen Geschrieben 16. September 2004 hey ich hab's jetzt doch geschafft. war wohl nur ein schreibfehler drin: DECLARE @DBName nvarchar(256) DECLARE @FileName nvarchar(512) DECLARE @BackupDirectory varchar(128) SET NOCOUNT ON SELECT @BackupDirectory = 'd:\dumps' SELECT @DBName = DB_NAME(), @FileName = @BackupDirectory + '\' + DB_NAME() + REPLACE(REPLACE(CONVERT(CHAR(19), GETDATE(),120), ' ', '_'), ':', '-') + '.TRN' BACKUP LOG @DBName TO DISK = @FileName WITH NOINIT, NOUNLOAD , RETAINDAYS = 1, NAME = N'ASSIST Sicherung TRNLOG', NOSKIP, NOFORMAT jedenfalls funktioniert jetzt alles. trotzdem stellt sich nun die grundsätzliche frage ob man hiermit ein gutes desaster recovery durchführen kann. die sicherungen (transactionslogs und vollsicherungen) werd jedesmal in neue dateien geschrieben. ich benötige hierbei wohl viel mehr speicherplatz auf der festplatte, aber vielleicht funktioniert es ja damit. sollte jemand noch generell einen tip oder eine anmerkung zur sicherung von sql datenbanken haben, so solle er biete posten oder für immer schweigen. :D ich kann jeden sachdienlichen hinweise gebrauchen !!! thx Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 16. September 2004 Melden Teilen Geschrieben 16. September 2004 Glückwunsch das du es alleine noch hinbekommen hast. Für deine letzte Frage würde ich dir raten einen eigenen Thread aufzumachen, dann wird das ganze übersichtlicher und lässt sich besser diskutieren. Gruss Carsten PS: Wo lag denn der Schreibfehler? Zitieren Link zu diesem Kommentar
biot3ch 10 Geschrieben 16. September 2004 Autor Melden Teilen Geschrieben 16. September 2004 beim NAME = N'dbname....... fehlte das N vor dem ' ....nach langem hin und her und dummen fragen stellen, hab ich festgestellt, dass der sql-server agent im wartungsplan genau die funktion zur verfügung stellt, die ich mir in diesem ****en script selbst zusammengebaut hab. hier wird für jede backupdatei ein eigener dateiname mit zeitstempel generiert und man kann je nach alter diese dateien auch wieder entfernen lassen. tjo, warum einfach wenn s auch schwer geht !?!? :D Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.