xiazhengtongxue
2026-02-09 e81c782b3e7a632ffb8e32be56fce931a8c89ae6
ÏîÄ¿´úÂë/WCSServices/WIDESEAWCS_SystemServices/Sys_LogService.cs
@@ -154,7 +154,7 @@
        private const double FragmentationThreshold = 30.0; // 30%碎片率阈值
        private const int MaintenanceIntervalDays = 15; // 15天执行一次
        private const int BackupRetentionDays = 30; // å¤‡ä»½ä¿ç•™30天
        private const string BackupBasePath = @"D:\DatabaseBackups"; // å¤‡ä»½æ–‡ä»¶å­˜å‚¨ç›®å½•
        private static readonly string BackupBasePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DatabaseBackups");  // å¤‡ä»½æ–‡ä»¶å­˜å‚¨ç›®å½•
        private const bool UseBackupCompression = true; // æ˜¯å¦ä½¿ç”¨å¤‡ä»½åŽ‹ç¼©
        private const bool VerifyBackup = true; // æ˜¯å¦éªŒè¯å¤‡ä»½
        private const int MaxBackupRetryCount = 3; // æœ€å¤§é‡è¯•次数
@@ -237,7 +237,7 @@
                    connection.Open();
                    // 1. å¤‡ä»½æ•°æ®åº“
                    BackupDatabase();
                    //BackupDatabase();
                    // 2. æ£€æŸ¥æ•°æ®åº“文件大小
                    CheckDatabaseFileSize(connection);
@@ -249,7 +249,7 @@
                    UpdateStatistics(connection);
                    // 5. æ¸…理旧备份
                    CleanupOldBackups();
                    //CleanupOldBackups();
                    // æ›´æ–°æœ€åŽæ£€æŸ¥æ—¥æœŸ
                    lock (_fileSizeLock)
@@ -307,14 +307,6 @@
                                fileCount = Convert.ToInt32(reader["FileCount"]);
                            }
                        }
                        // æ£€æŸ¥ç£ç›˜ç©ºé—´æ˜¯å¦è¶³å¤Ÿ
                        if (!CheckDiskSpace(backupFilePath, totalSizeMB))
                        {
                            throw new Exception("磁盘空间不足,无法执行备份");
                        }
                        // æž„建备份SQL语句
                        var backupSql = BuildBackupSql(backupFilePath);
@@ -337,30 +329,6 @@
                    Console.WriteLine($"数据库备份失败: {ex.Message}");
                    throw new Exception($"数据库备份失败: {ex.Message}", ex);
                }
            }
        }
        private bool CheckDiskSpace(string backupFilePath, double estimatedBackupSizeMB)
        {
            try
            {
                var driveInfo = new DriveInfo(Path.GetPathRoot(backupFilePath));
                var freeSpaceMB = driveInfo.AvailableFreeSpace / (1024 * 1024);
                // éœ€è¦è‡³å°‘1.5倍的空间来确保备份顺利进行
                var requiredSpaceMB = estimatedBackupSizeMB * 1.5;
                if (freeSpaceMB < requiredSpaceMB)
                {
                    return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                Console.WriteLine($"检查磁盘空间时出错: {ex.Message}");
                return false;
            }
        }
@@ -507,9 +475,8 @@
                {
                    return false;
                }
                // æ£€æŸ¥æ—¶é—´æ˜¯å¦æ˜¯1点左右(允许1:00-1:59)
                if (now.Hour != 1)
                if (now.Hour != 1 && now.Hour != 2)
                {
                    return false;
                }