BackupDatabase and BackupDatabaseDeleteAll
This commit is contained in:
parent
e4fe0d9cb7
commit
96b78bd4b9
5 changed files with 51 additions and 6 deletions
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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.");
|
||||
}
|
||||
}
|
||||
|
|
@ -1073,7 +1073,8 @@
|
|||
"workerType": "BackupWorker",
|
||||
"isActive": true,
|
||||
"dataSourceCode": "Default",
|
||||
"beforeSp": "Adm_T_DatabaseBackup"
|
||||
"beforeSp": "Adm_T_DatabaseBackupAll",
|
||||
"afterSp": "Adm_T_DatabaseBackupDeleteAll"
|
||||
}
|
||||
],
|
||||
"ContactTitles": [
|
||||
|
|
|
|||
|
|
@ -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')
|
||||
|
|
@ -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
|
||||
Loading…
Reference in a new issue