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
|
# fontconfig ve fonts-* DevExpress reporting için gerekli
|
||||||
RUN apk update
|
RUN apk update
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
|
tzdata \
|
||||||
icu-data-full \
|
icu-data-full \
|
||||||
icu-libs \
|
icu-libs \
|
||||||
libgdiplus \
|
libgdiplus \
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using System;
|
using System;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Hangfire;
|
using Hangfire;
|
||||||
|
|
@ -31,6 +32,12 @@ public class BackgroundWorkerInitializer : ITransientDependency
|
||||||
|
|
||||||
public async Task RunAsync()
|
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 jobs = JobStorage.Current.GetConnection().GetRecurringJobs();
|
||||||
var workers = await _repo.GetListAsync(a => a.IsActive);
|
var workers = await _repo.GetListAsync(a => a.IsActive);
|
||||||
|
|
||||||
|
|
@ -53,7 +60,7 @@ public class BackgroundWorkerInitializer : ITransientDependency
|
||||||
worker.Cron,
|
worker.Cron,
|
||||||
new RecurringJobOptions
|
new RecurringJobOptions
|
||||||
{
|
{
|
||||||
TimeZone = TimeZoneInfo.Local,
|
TimeZone = turkeyTimeZone
|
||||||
});
|
});
|
||||||
|
|
||||||
if (worker.WorkerType == WorkerTypeEnum.MailQueueWorker && !worker.Options.IsNullOrWhiteSpace())
|
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",
|
"workerType": "BackupWorker",
|
||||||
"isActive": true,
|
"isActive": true,
|
||||||
"dataSourceCode": "Default",
|
"dataSourceCode": "Default",
|
||||||
"beforeSp": "Adm_T_DatabaseBackup"
|
"beforeSp": "Adm_T_DatabaseBackupAll",
|
||||||
|
"afterSp": "Adm_T_DatabaseBackupDeleteAll"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"ContactTitles": [
|
"ContactTitles": [
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,15 @@
|
||||||
CREATE OR ALTER PROCEDURE [dbo].[Adm_T_DatabaseBackup]
|
CREATE OR ALTER PROCEDURE [dbo].[Adm_T_DatabaseBackupAll]
|
||||||
AS
|
AS
|
||||||
BEGIN
|
BEGIN
|
||||||
SET NOCOUNT ON;
|
SET NOCOUNT ON;
|
||||||
|
|
||||||
DECLARE @SQL NVARCHAR(MAX) = N'';
|
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'
|
SELECT @SQL = @SQL + N'
|
||||||
BACKUP DATABASE ' + QUOTENAME(name) + N'
|
BACKUP DATABASE ' + QUOTENAME(name) + N'
|
||||||
TO DISK = N''/var/opt/mssql/backup/'
|
TO DISK = N''/var/opt/mssql/backup/'
|
||||||
+ name + N'_' + CONVERT(VARCHAR(8), GETDATE(), 112) + N'.bak''
|
+ name + N'_' + @Tarih + N'.bak''
|
||||||
WITH INIT;'
|
WITH INIT;'
|
||||||
FROM sys.databases
|
FROM sys.databases
|
||||||
WHERE name NOT IN ('master','model','msdb','tempdb')
|
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