( kruska | 2023. 11. 06., h – 09:00 )

(nem a kérdésedre válasz, de hátha segítség)

Ha osql-ből indítod az mssql mentést, és megadod a -b opciót, akkor az errorlevel értéket beállítja hibás futás esetén, ezt tudod csekkolni.

-b
Specifies that osql exits and returns a DOS ERRORLEVEL value when an error occurs. The value returned to the DOS ERRORLEVEL variable is 1 when the SQL Server error message has a severity of 11 or greater; otherwise, the value returned is 0. Microsoft MS-DOS batch files can test the value of DOS ERRORLEVEL and handle the error appropriately.

Előkerestem régi MSSQL backup scriptjeimet, küldök néhány részletet, ha esetleg saját backup scripteket akarsz írni.

Ez kilistázza az összes adatbázist (be kellett építenünk egy ilyet, mert a fejlesztők rendre elfelejtettek szólni, hogy új adatbázist hoztak létre, amihez kellett volna beállítanunk mentést):

OSQL.exe -E -Slocalhost -h-1 -Q"SET NOCOUNT ON;SELECT LTRIM(RTRIM(name)) FROM sysdatabases WHERE name NOT IN ('master','tempdb','model','msdb');"

Újabb mssql szerveren lehet simán TRIM(name).

Ez pedig végiggyalogol a fenti alapján listázott adatbázisokon, és lementi:

set BACKUP_DIR=D:\backup
set BACKUP_LAST_LOG=D:\backup\backup.last.txt
set BACKUP_FILE=sqlbackup_%date:~0,4%-%date:~5,2%-%date:~8,2%.bak

For /f %%G IN ('C:\tools\scripts\listdb.bat') do (
	osql -b -E -Q "BACKUP DATABASE [%%~nG] TO DISK = N'%BACKUP_DIR%\%BACKUP_FILE%' WITH COMPRESSION" -w 120 -o %BACKUP_LAST_LOG%
)

Mivel mssql nem szeret hálózati meghajtóra menteni, lokális diszkről egyből mirrorozni kell egy hálózati meghajtóra is, onnan mehet pull backup rendes backup médiára.

Nyilván ettől függetlenül magát a script futását is ellenőrizni kell egy független eszközzel.