Jump to content

Transact SQL script Problem


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

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!!

Geschrieben


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
[/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 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
[/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

Geschrieben

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

 

 

:confused:

sorry bin eben sql newbie

Geschrieben

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

Geschrieben

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. :confused:

 

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

Geschrieben

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.

Geschrieben

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 ?! :confused:

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...

Geschrieben

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.

Geschrieben

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 :cry:

 

naja trotzdem thx.

 

vielleicht hat ja noch jemand anders ne idee ?!

Geschrieben

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

Geschrieben

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

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...