BackupDatabase and BackupDatabaseDeleteAll

This commit is contained in:
Sedat ÖZTÜRK 2026-05-11 09:03:17 +03:00
parent e4fe0d9cb7
commit 96b78bd4b9
5 changed files with 51 additions and 6 deletions

View file

@ -75,6 +75,7 @@ RUN mkdir -p $HOME/.config/DevExpress && \
# fontconfig ve fonts-* DevExpress reporting için gerekli
RUN apk update
RUN apk add --no-cache \
tzdata \
icu-data-full \
icu-libs \
libgdiplus \

View file

@ -1,4 +1,5 @@
using System;
using System.Runtime.InteropServices;
using System.Text.Json;
using System.Threading.Tasks;
using Hangfire;
@ -31,6 +32,12 @@ public class BackgroundWorkerInitializer : ITransientDependency
public async Task RunAsync()
{
var turkeyTimeZone = GetTurkeyTimeZone();
_logger.LogInformation(
"Background workers Türkiye saat dilimine göre kuruluyor. TimeZoneId: {TimeZoneId}",
turkeyTimeZone.Id);
var jobs = JobStorage.Current.GetConnection().GetRecurringJobs();
var workers = await _repo.GetListAsync(a => a.IsActive);
@ -53,7 +60,7 @@ public class BackgroundWorkerInitializer : ITransientDependency
worker.Cron,
new RecurringJobOptions
{
TimeZone = TimeZoneInfo.Local,
TimeZone = turkeyTimeZone
});
if (worker.WorkerType == WorkerTypeEnum.MailQueueWorker && !worker.Options.IsNullOrWhiteSpace())
@ -67,4 +74,28 @@ public class BackgroundWorkerInitializer : ITransientDependency
}
}
}
}
private static TimeZoneInfo GetTurkeyTimeZone()
{
var timeZoneIds = RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
? new[] { "Turkey Standard Time", "Europe/Istanbul" }
: new[] { "Europe/Istanbul", "Turkey Standard Time" };
foreach (var timeZoneId in timeZoneIds)
{
try
{
return TimeZoneInfo.FindSystemTimeZoneById(timeZoneId);
}
catch (TimeZoneNotFoundException)
{
}
catch (InvalidTimeZoneException)
{
}
}
throw new TimeZoneNotFoundException(
"Türkiye saat dilimi bulunamadı. Linux/Docker için 'Europe/Istanbul', Windows için 'Turkey Standard Time' gerekir.");
}
}

View file

@ -1073,7 +1073,8 @@
"workerType": "BackupWorker",
"isActive": true,
"dataSourceCode": "Default",
"beforeSp": "Adm_T_DatabaseBackup"
"beforeSp": "Adm_T_DatabaseBackupAll",
"afterSp": "Adm_T_DatabaseBackupDeleteAll"
}
],
"ContactTitles": [

View file

@ -1,14 +1,15 @@
CREATE OR ALTER PROCEDURE [dbo].[Adm_T_DatabaseBackup]
CREATE OR ALTER PROCEDURE [dbo].[Adm_T_DatabaseBackupAll]
AS
BEGIN
SET NOCOUNT ON;
DECLARE @SQL NVARCHAR(MAX) = N'';
DECLARE @Tarih NVARCHAR(20) = CONVERT(CHAR(8), CAST(SYSUTCDATETIME() AT TIME ZONE 'UTC' AT TIME ZONE 'Turkey Standard Time' AS DATE),112);
SELECT @SQL = @SQL + N'
BACKUP DATABASE ' + QUOTENAME(name) + N'
TO DISK = N''/var/opt/mssql/backup/'
+ name + N'_' + CONVERT(VARCHAR(8), GETDATE(), 112) + N'.bak''
+ name + N'_' + @Tarih + N'.bak''
WITH INIT;'
FROM sys.databases
WHERE name NOT IN ('master','model','msdb','tempdb')

View file

@ -0,0 +1,11 @@
CREATE OR ALTER PROCEDURE [dbo].[Adm_T_DatabaseBackupDeleteAll]
AS
BEGIN
SET NOCOUNT ON;
DECLARE @DeleteDate date
SET @DeleteDate = DATEADD(DAY, -1, GETDATE())
EXEC master.sys.xp_delete_file 0, '/var/opt/mssql/backup/', 'BAK', @DeleteDate, 0;
END