ndrag76
Goto Top

SQL Server (Express) Dump mit Batch

Hi,

ich versuche eigentlich nur mit einem Script Datenbank Dumps zu erstellen. Google liefert da auch den passenden Befehl:

SqlCmd -S.\SQLExpress -Q"BACKUP DATABASE [DB_Main_Users] TO DISK = 'D:\Backups\Vollbackup\DB_Main_Users.bak'"

Soweit ich das aus diesem Beispiel sehe, habe ich alles richtig gemacht:

http://mytv.senseitweb.com/wikis/mytv/how-do-i-backup-restore-my-databa ...

"To Backup:

sqlcmd -S.\SQLExpress
1> BACKUP DATABASE dbName TO DISK = 'path'
2> GO

An alternative, single-line backup command:

sqlcmd -S.\SQLExpress -Q"BACKUP DATABASE dbName TO DISK = 'path'"

(Note that you must enclose the path within quotes)

Replacing <dbname></dbname>with the name of the database you wish to backup and <path></path>with the path for the backupfile. For a default myTV installation dbName would be myTV and the path could be C:\Program Files\Microsoft SQL Server\bak\myTV.bak.

Daelic's Note: I found my backup path here: C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup. Also, you will get an error and the backup will fail if you attempt to backup anywhere other than the pre-defined MSSQL backup location."



Wenn ich sqlcmd normal starte, also ohne Parameter und dann ein BACKUP DATABASE mit Path in Anführungszeichen eingebe und mit GO starte läuft auch alles wunderbar (Daelics Hinweis bezüglich des Sicherungsortes greift da nicht, sofern entsprechender Dateizugriff besteht, kann ich überall hin sichern).

Sobald ich aber die single-line variante verwende, bekomme ich den Fehler:

Sqlcmd: '-Q "BACKUP DATABASE [DB_Main_Users] TO DISK = 'D:\Backups\Vollbackup\DB_Main_Users.bak'': Unerwartetes Argument. Geben Sie '-?' ein, um die Hilfe anzuzeigen.

Meine Eingabe:
SqlCmd -S.\SQLExpress -Q"BACKUP DATABASE [DB_Main_Users] TO DISK = 'D:\Backups\Vollbackup\DB_Main_Users.bak'"

Vorschlag aus dem Tutorial:
sqlcmd -S.\SQLExpress -Q"BACKUP DATABASE dbName TO DISK = 'path'"

Sollte eigentlich passen. Ich weiß auch das es Alternativen gibt. Ich würde nur gern verstehen wo hier mein Fehler liegt.

Content-ID: 187357

Url: https://administrator.de/contentid/187357

Ausgedruckt am: 08.11.2024 um 07:11 Uhr

Snuggy
Snuggy 02.07.2012 um 20:12:09 Uhr
Goto Top
Hi,
ich hatte auch schonmal das Vergnügen mit dem SQL-Express Server, mir ist dabei aufgefallen, dass das Backup per Script nur in folgenden Pfad geklappt hat
C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\Backup\

Ich sichere hiermit jeden Abend erfolgreich eine Datenbank, ich hoffe das hilft dir
sqlcmd -Sservername01\SQLEXPRESS -Q"BACKUP DATABASE [Datenbankname] TO DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\Backup\backup.bak'"  
MadMax
MadMax 04.07.2012 um 00:53:45 Uhr
Goto Top
Hallo ndrag76,

das unerwartete Argument dürfte hinter dem -S stehen. Mit -S gibst Du den Server an, an dem Du Dich anmelden willst. Wenn Du SqlCmd ohne Parameter startest, dann wirst Du mit Windows-Authentifizierung an der Standardinstanz angemeldet. Anschließend wird der Backup-Befehl ordentlich verarbeitet.

Du kannst also den Parameter -S weglassen (SqlCmd -Q"BACKUP DATABASE [DB_Main_Users] TO DISK = 'D:\Backups\Vollbackup\DB_Main_Users.bak'") oder aber den korrekten Server- und Instanznamen angeben.

Außerdem empfehle ich Dir noch, mal einen Blick in die SQL Server Hilfe zu dem Thema SqlCmd zu werfen. Nur für den Fall, daß Du dann vielleicht doch noch irgendetwas variieren mußt/willst.

Gruß, Mad Max
ndrag76
ndrag76 20.07.2012 um 16:40:33 Uhr
Goto Top
Hallo Mad Max,

sorry für die späte Antwort.

Deine Lösung hat perfekt funktioniert. Vielen Dank!

Grüsse

NDrag
ndrag76
ndrag76 20.07.2012 um 16:43:07 Uhr
Goto Top
Hallo Snuggy,

auch hier, sorry für die späte Antwort.

Deine Lösung ist eine Möglichkeit, aber ich wollte nachvollziehen wo hier der/mein (Syntax-)fehler liegt. Natürlich kann man auch in dem Standardverzeichnis dumpen und dann kopieren, nur das wollte ich vermeiden.

Trotzdem vielen Dank für den Vorschlag.

Grüsse

NDrag