From ef2075c8583b84bf214545b50974cff61c99368c Mon Sep 17 00:00:00 2001 From: dyy <807692433@qq.com> Date: Thu, 12 Jan 2023 15:28:11 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BF=AE=E6=94=B9=E3=80=91=E6=B8=85?= =?UTF-8?q?=E7=A9=BA=E6=95=B0=E6=8D=AE=E5=BA=93=EF=BC=9A=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E6=93=8D=E4=BD=9C=E4=B8=AD=E5=A2=9E=E5=8A=A0=E6=B8=85?= =?UTF-8?q?=E9=99=A4=E5=BA=93=E7=9A=84=E8=A7=A6=E5=8F=91=E5=99=A8=E5=92=8C?= =?UTF-8?q?=E7=BA=A6=E6=9D=9F=E6=96=B9=E6=B3=95=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DatabaseInit/DatabaseInitService.cs | 116 +++++++++++++++++- 1 file changed, 114 insertions(+), 2 deletions(-) diff --git a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Base/SystemModule/DatabaseInit/DatabaseInitService.cs b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Base/SystemModule/DatabaseInit/DatabaseInitService.cs index bf1ea5ead..6e989a925 100644 --- a/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Base/SystemModule/DatabaseInit/DatabaseInitService.cs +++ b/Learun.Framework.Ultimate V7/Learun.Framework.Module/Learun.Application.Module/Learun.Application.Base/SystemModule/DatabaseInit/DatabaseInitService.cs @@ -3,6 +3,7 @@ using Learun.Util; using System; using System.Collections.Generic; using System.IO; +using System.Linq; using System.Text; namespace Learun.Application.Base.SystemModule @@ -50,14 +51,83 @@ namespace Learun.Application.Base.SystemModule string backupSql2 = "backup database " + databaseName2 + " to disk='" + filePath2 + "' with format;"; this.BaseRepository("CollegeMIS").ExecuteAsyncBySql(backupSql2); - //清除业务数据 + //清除触发器 + if (true) + { + var strSql1 = new StringBuilder(); + strSql1.Append(@"select a.name,a.id,a.xtype,a.parent_obj,b.name as pname,b.id as pid,b.xtype as pxtype,b.type as ptype, + 'drop trigger ' + a.name + ';' as sql + from sysobjects a + left join sysobjects b on a.parent_obj = b.id + where a.xtype = 'TR' + and b.name not like '%sys%' and b.name not like '%dt%' + order by b.name + ; "); + //adms7ultimate2表 + var sqlList = this.BaseRepository().FindList(strSql1.ToString()).Select(x=>x.sql); + //清除 + if (sqlList.Any()) + { + foreach (var item in sqlList) + { + this.BaseRepository().ExecuteBySql(item); + } + } + //CollegeMIS表 + var sqlList2 = this.BaseRepository("CollegeMIS").FindList(strSql1.ToString()).Select(x => x.sql); + //清除 + if (sqlList2.Any()) + { + foreach (var item in sqlList2) + { + this.BaseRepository("CollegeMIS").ExecuteBySql(item); + } + } + } + + //清除约束 + if (true) + { + var strSql1 = new StringBuilder(); + strSql1.Append(@"select a.name,a.id,a.xtype,a.parent_obj,b.name as pname,b.id as pid,b.xtype as pxtype,b.type as ptype, + 'alter table '+b.name+' drop constraint '+a.name+';' as sql + from sysobjects a + left join sysobjects b on a.parent_obj=b.id + where a.xtype in ('F','C','D','UQ') + and b.name not like '%sys%' and b.name not like '%dt%' + order by b.name + ;"); + //adms7ultimate2表 + var sqlList = this.BaseRepository().FindList(strSql1.ToString()).Select(x => x.sql); + //清除 + if (sqlList.Any()) + { + foreach (var item in sqlList) + { + this.BaseRepository().ExecuteBySql(item); + } + } + //CollegeMIS表 + var sqlList2 = this.BaseRepository("CollegeMIS").FindList(strSql1.ToString()).Select(x => x.sql); + //清除 + if (sqlList2.Any()) + { + foreach (var item in sqlList2) + { + this.BaseRepository("CollegeMIS").ExecuteBySql(item); + } + } + } + + + //清除业务数据(当表有触发器和约束时,会执行异常!错误信息为:“子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。”) if (true) { var strSql1 = new StringBuilder(); strSql1.Append("declare @trun_name varchar(50) "); strSql1.Append("declare name_cursor cursor for "); strSql1.Append("select 'truncate table ' + name+';' from sysobjects where xtype='U' and name <> 'LR_Base_User' and name <> 'LR_Base_Role' and name<>'LR_App_Function' and name<>'LR_Base_Authorize' and name<>'LR_Base_DatabaseLink' "); - strSql1.Append(" and name<>'LR_Base_DataCondition' and name<>'LR_Base_DataItem' and name<>'LR_Base_DataItemDetail' and name<>'LR_Base_DataRelation' and name<>'LR_Base_DataSource' "); + strSql1.Append(" and name<>'LR_Base_DataCondition' and name<>'LR_Base_DataItem' and name<>'LR_Base_DataItemDetail' and name<>'LR_Base_DataRelation' and name<>'LR_Base_DataSource' and name<>'LR_Base_Area' "); strSql1.Append(" and name<>'LR_Base_DbField' and name<>'LR_Base_Interface' and name<>'LR_Base_Logo' and name<>'LR_Base_Module' and name<>'LR_Base_ModuleButton' and name<>'LR_Base_ModuleColumn' "); strSql1.Append(" and name<>'LR_Base_ModuleForm' and name<>'LR_Base_UserRelation' and name<>'LR_DT_Chart' and name<>'LR_DT_List' and name<>'LR_DT_Target' and name<>'LR_Excel_Export' and name<>'LR_Excel_Import' "); strSql1.Append(" and name<>'LR_Excel_ImportFileds' and name<>'LR_Form_Relation' and name<>'LR_Form_Scheme' and name<>'LR_Form_SchemeInfo' and name<>'LR_Lg_Map' and name<>'LR_Lg_Type' and name<>'LR_NWF_Scheme' "); @@ -103,6 +173,48 @@ namespace Learun.Application.Base.SystemModule } } + /// + /// 视图临时模型 + /// + public class SysobjectModel { + /// + /// 触发器、约束名称 + /// + public string name { get; set; } + /// + /// 触发器、约束id + /// + public string id { get; set; } + /// + /// 类型 + /// + public string xtype { get; set; } + /// + /// 触发器、约束所属表id + /// + public string parent_obj { get; set; } + /// + /// 触发器、约束所属表名 + /// + public string pname { get; set; } + /// + /// 表id + /// + public string pid { get; set; } + /// + /// 表类型 + /// + public string pxtype { get; set; } + /// + /// 表类型 + /// + public string ptype { get; set; } + /// + /// 删除语句 + /// + public string sql { get; set; } + } +