Browse Source

添加数据库备份功能到 SystemController

在 SystemController.cs 文件中:
- 添加对 SqlSugar、System.Collections 和 System.Data 的引用。
- 添加 #region backups 区域,用于数据库备份功能。
- 添加 SQLServerBackups 异步方法,执行数据库备份操作。
- SQLServerBackups 方法包含创建备份文件夹的逻辑。
- 包含使用 SqlSugar 库备份数据库的注释代码示例。
- SQLServerBackups 方法返回 JsonView 对象,表示操作结果。
LEIYI 2 months ago
parent
commit
cdb2e7ad78
1 changed files with 68 additions and 0 deletions
  1. 68 0
      OASystem/OASystem.Api/Controllers/SystemController.cs

+ 68 - 0
OASystem/OASystem.Api/Controllers/SystemController.cs

@@ -2,7 +2,10 @@ using OASystem.Domain.AesEncryption;
 using OASystem.Domain.Entities.Customer;
 using OASystem.Domain.Entities.Financial;
 using OASystem.Domain.Entities.Groups;
+using SqlSugar;
 using System.Collections;
+using System.Data;
+using static NPOI.HSSF.Util.HSSFColor;
 using static OASystem.API.OAMethodLib.GeneralMethod;
 using static OASystem.API.OAMethodLib.JWTHelper;
 
@@ -3047,5 +3050,70 @@ And u.UId = {0} And u.FId = 1 ", dto.UserId);
             return Ok(JsonView(false));
         }
         #endregion
+
+        #region backups
+        /// <summary>
+        /// 数据库备份
+        /// </summary>
+        /// <returns></returns>
+        [HttpGet)]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> SQLServerBackups()
+        {
+            var now = DateTime.Now;
+
+            var folderPath = $"D:\\数据备份\\{now.ToString("yyyyMMdd")}\\SQLServerBackups";
+            if (!Directory.Exists(folderPath)) Directory.CreateDirectory(folderPath);
+
+            //string backupFilePath = $"{folderPath}\\database_backup_OA2014DB_{now.ToString("yyyyMMddHHmmss")}.bat";
+            //var backupSql = $"BACKUP DATABASE [OA2014] TO DISK='{backupFilePath}'";
+            //Console.WriteLine($"原生备份开始执行");
+            //_sqlSugar.ChangeDatabase(DBEnum.OA2014DB);
+            //await _sqlSugar.Ado.ExecuteCommandAsync(backupSql);
+            //Console.WriteLine($"原生备份成功,文件已生成到:{backupFilePath}");
+
+            //string backupFilePath = $"{folderPath}\\database_backup_OA2014DB_{now.ToString("yyyyMMddHHmmss")}.sql";
+            //var backupSql = $"BACKUP DATABASE [OA2014] TO DISK='{backupFilePath}'";
+
+            //Console.WriteLine($"原生备份开始执行");
+            //_sqlSugar.ChangeDatabase(DBEnum.OA2014DB);
+            //using (StreamWriter writer = new StreamWriter(backupFilePath))
+            //{
+            //    // 获取所有表名
+            //    var tables = _sqlSugar.Ado.GetDataTable("SELECT name FROM sys.tables").AsEnumerable();
+
+            //    foreach (var tableRow in tables)
+            //    {
+            //        var tableName = tableRow.Field<string>("name");
+
+            //        // 获取表结构的 SQL
+            //        var createTableSql = _sqlSugar.Ado.GetDataTable($@"
+            //            SELECT OBJECT_DEFINITION(OBJECT_ID('{tableName}')) AS CreateTableSql").Rows[0][0];
+            //        writer.WriteLine(createTableSql);
+            //        writer.WriteLine();
+
+            //        // 获取表数据并生成 INSERT 脚本
+            //        var data = _sqlSugar.Queryable<dynamic>().AS(tableName) .ToList();
+            //        foreach (var item in data)
+            //        {
+            //            var properties = item.GetType().GetProperties();
+            //            var values = new List<string>();
+            //            foreach (var prop in properties)
+            //            {
+            //                var value = prop.GetValue(item);
+            //                values.Add(value == null ? "NULL" : $"'{value}'");
+            //            }
+            //            var insertSql = $"INSERT INTO {tableName} VALUES ({string.Join(", ", values)});";
+            //            writer.WriteLine(insertSql);
+            //        }
+            //    }
+            //}
+
+            //Console.WriteLine($"数据库备份成功,SQL 脚本已生成到:{backupFilePath}");
+
+            return Ok(JsonView(false));
+        }
+
+        #endregion
     }
 }