Batch variable in SQL Command übergeben und ausführen
Ich stehe vor einem kleinen Problem. Ich soll einige Variablen, die ich bisher bei einem SQL Backup/Recovery per Batch abfrage, in die Datenbank schreiben. Das soll einfach zu historischen Zwecken diesen, damit man sieht, wann welches Backup mit welchen Paramtern eingespielt bzw. erstellt wurde.
Ich habe das fertige SQL-Kommando von einem Kollegen bekommen. Nun scheitert es bei mir daran die Variablen aus dem Batch-Script in das SQL-Kommando einzufügen und ausziuführen.
Vielleicht kann ja jemand helfen?
Batch Variablen:
%_ip_address%
%_dns_name%
%_scriptname%
%_backup%
%_recovery_file%
%_clear_statistics%
%_useraccdata%
SQL Parameter:
set @in_ip_address = '%_ip_address%';
set @in_dns_name = '%_dns_name%';
set @in_action = '%_scriptname%';
set @in_action_parameter = '%_backup%, recovery file=%_recovery_file%, %_clear_statistics%, %_useraccdata%;
set @in_protocol_version = ''; <= hier nicht relevant, deshalb leer
set @in_version = ''; <= hier nicht relevant, deshalb leer
SQL-Kommando:
call railsys.write_database_changelog_entry(@in_ip_address, @in_dns_name, @in_action, @in_action_parameter, @in_protocol_version, @in_version);
Ich habe das fertige SQL-Kommando von einem Kollegen bekommen. Nun scheitert es bei mir daran die Variablen aus dem Batch-Script in das SQL-Kommando einzufügen und ausziuführen.
Vielleicht kann ja jemand helfen?
Batch Variablen:
%_ip_address%
%_dns_name%
%_scriptname%
%_backup%
%_recovery_file%
%_clear_statistics%
%_useraccdata%
SQL Parameter:
set @in_ip_address = '%_ip_address%';
set @in_dns_name = '%_dns_name%';
set @in_action = '%_scriptname%';
set @in_action_parameter = '%_backup%, recovery file=%_recovery_file%, %_clear_statistics%, %_useraccdata%;
set @in_protocol_version = ''; <= hier nicht relevant, deshalb leer
set @in_version = ''; <= hier nicht relevant, deshalb leer
SQL-Kommando:
call railsys.write_database_changelog_entry(@in_ip_address, @in_dns_name, @in_action, @in_action_parameter, @in_protocol_version, @in_version);
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4382272286
Url: https://administrator.de/contentid/4382272286
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
5 Kommentare
Neuester Kommentar
Moin,
Vorab:
Wenn MS SQL:
im schlimmstenfall schreibst du alles in eine TExtdatei (Query.sql) und führst das Query mit der SQLCMD.exe aus. Oder du nutzt selbiges Programm mit dem Parameter -Q
Dritte Option:
Nutze die Powershell: die kann, wenn das richtige Modul geladen ist, direkt den SQL-Server ansprechen...
Gruß
em-pie
Vorab:
- Welches DBMS? -> MS SQL, MySQL PostgreSQL, ...
- Wo hakt es bei dir?
- Gibt es Fehler?
Wenn MS SQL:
im schlimmstenfall schreibst du alles in eine TExtdatei (Query.sql) und führst das Query mit der SQLCMD.exe aus. Oder du nutzt selbiges Programm mit dem Parameter -Q
Dritte Option:
Nutze die Powershell: die kann, wenn das richtige Modul geladen ist, direkt den SQL-Server ansprechen...
Gruß
em-pie
OK.
Dein erstes Problem:
Mit SET definierst du ja auch innerhalb der Batch Variablen
demnach wäre ein
sinnvoller
am Ende, um über eine *.sql-Datei zu gehen:
ausführen kannst du das dann z. B. wie hier beschrieben, über die mysql.exe
https://stackoverflow.com/questions/8830773/run-mysql-script-by-batch-sc ...
Dein erstes Problem:
Mit SET definierst du ja auch innerhalb der Batch Variablen
SET var="Set"
echo %var%
demnach wäre ein
echo set @in_ip_address = '%_ip_address%'
am Ende, um über eine *.sql-Datei zu gehen:
%_ip_address%
%_dns_name%
%_scriptname%
%_backup%
%_recovery_file%
%_clear_statistics%
%_useraccdata%
REM SQL Parameter:
(
echo set @in_ip_address = '%_ip_address%';
echo set @in_dns_name = '%_dns_name%';
echo set @in_action = '%_scriptname%';
echo set @in_action_parameter = '%_backup%, recovery file=%_recovery_file%, %_clear_statistics%, %_useraccdata%;
echo set @in_protocol_version = ''; <= hier nicht relevant, deshalb leer
echo set @in_version = ''; <= hier nicht relevant, deshalb leer
)>>%userprofile%\Desktop\test.sql
ausführen kannst du das dann z. B. wie hier beschrieben, über die mysql.exe
https://stackoverflow.com/questions/8830773/run-mysql-script-by-batch-sc ...