Files
SGGL_SHJ/SGGL/Database/20260917_HSSE_InformationProject_Cleanup.sql
T

160 lines
7.4 KiB
Transact-SQL
Raw Normal View History

/*
清理范围:HSSE/InformationProject。
说明:数据库已由用户提前备份,本脚本不重复备份;脚本在事务中删除菜单、权限、视图和专属业务表。
保留:InformationProject_Notice、InformationProject_Picture、
InformationProject_ProjectMap、InformationProject_ReceiveFileManager;
HSSE/Law 现行法律法规库及其共享表 Law_LawRegulationSelectedItem。
*/
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRY
BEGIN TRANSACTION;
DECLARE @MenuIds TABLE (MenuId nvarchar(50) NOT NULL PRIMARY KEY);
INSERT INTO @MenuIds (MenuId)
VALUES
-- 法律法规及标准规范辨识
(N'A0D8A8F7-EF3A-4F81-B9C1-F9F2ECD63360'),
(N'C85CCDFC-E721-4B9D-B73F-F83C7578EE9B'),
(N'28B0235F-3DB5-4C15-A7E3-6F5DF52C8FDC'),
-- 集团安全报表
(N'C554E471-B740-4559-B543-E00F247289FD'),
(N'6E7DC075-A7AF-4E42-8F8B-0174EFDD54A1'),
(N'38E948BA-E043-4E89-9038-0CE1B508FA19'),
(N'0CDFC1BE-0796-4817-ADB8-7A0B48655E00'),
(N'0973EE1C-CD2A-4116-BD67-1ABAD71D6C7C'),
(N'FB174DD6-CBAE-43AF-9356-B098A17B719D'),
(N'FD572EFA-8E87-43D1-B514-25A39768106F');
/* 菜单相关流程、按钮权限和角色权限先于菜单删除。 */
DELETE FROM dbo.Sys_MenuFlowOperate
WHERE MenuId IN (SELECT MenuId FROM @MenuIds);
DELETE FROM dbo.Sys_ButtonPower
WHERE MenuId IN (SELECT MenuId FROM @MenuIds)
OR ButtonToMenuId IN (SELECT MenuId FROM @MenuIds);
DELETE FROM dbo.Sys_RolePower
WHERE MenuId IN (SELECT MenuId FROM @MenuIds);
DELETE FROM dbo.Sys_Menu
WHERE MenuId IN (SELECT MenuId FROM @MenuIds)
OR Url LIKE N'HSSE/InformationProject/%';
/* 视图先删除;选中项视图先于辨识视图,避免视图之间存在依赖。 */
IF OBJECT_ID(N'dbo.View_InformationProject_ConstructionStandardSelectedItem', N'V') IS NOT NULL
DROP VIEW dbo.View_InformationProject_ConstructionStandardSelectedItem;
IF OBJECT_ID(N'dbo.View_InformationProject_ConstructionStandardIdentify', N'V') IS NOT NULL
DROP VIEW dbo.View_InformationProject_ConstructionStandardIdentify;
/* 明细表先删,再删除 InformationProject 专属主表。 */
IF OBJECT_ID(N'dbo.InformationProject_AccidentCauseReportItem', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_AccidentCauseReportItem;
IF OBJECT_ID(N'dbo.InformationProject_ConstructionStandardSelectedItem', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_ConstructionStandardSelectedItem;
IF OBJECT_ID(N'dbo.InformationProject_DrillConductedQuarterlyReportItem', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_DrillConductedQuarterlyReportItem;
IF OBJECT_ID(N'dbo.InformationProject_DrillPlanHalfYearReportItem', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_DrillPlanHalfYearReportItem;
IF OBJECT_ID(N'dbo.InformationProject_AccidentCauseReport', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_AccidentCauseReport;
IF OBJECT_ID(N'dbo.InformationProject_ConstructionStandardIdentify', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_ConstructionStandardIdentify;
IF OBJECT_ID(N'dbo.InformationProject_DrillConductedQuarterlyReport', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_DrillConductedQuarterlyReport;
IF OBJECT_ID(N'dbo.InformationProject_DrillPlanHalfYearReport', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_DrillPlanHalfYearReport;
IF OBJECT_ID(N'dbo.InformationProject_EPSummaryReport', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_EPSummaryReport;
IF OBJECT_ID(N'dbo.InformationProject_MillionsMonthlyReport', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_MillionsMonthlyReport;
IF OBJECT_ID(N'dbo.InformationProject_SafetyQuarterlyReport', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_SafetyQuarterlyReport;
IF OBJECT_ID(N'dbo.InformationProject_WorkSummaryReport', N'U') IS NOT NULL
DROP TABLE dbo.InformationProject_WorkSummaryReport;
/* Law_LawRegulationSelectedItem 同时服务现行法规库和旧项目辨识;只清除旧辨识关系数据。 */
DELETE FROM dbo.Law_LawRegulationSelectedItem
WHERE LawRegulationIdentifyId IS NOT NULL;
IF EXISTS
(
SELECT 1
FROM sys.foreign_keys
WHERE name = N'FK_Law_LawRegulationSelectedItem_Law_LawRegulationIdentify'
)
ALTER TABLE dbo.Law_LawRegulationSelectedItem
DROP CONSTRAINT FK_Law_LawRegulationSelectedItem_Law_LawRegulationIdentify;
IF OBJECT_ID(N'dbo.Law_LawRegulationIdentify', N'U') IS NOT NULL
DROP TABLE dbo.Law_LawRegulationIdentify;
COMMIT TRANSACTION;
/* 删除结果:以下对象均应为 0。 */
SELECT v.ObjectName,
CASE WHEN OBJECT_ID(N'dbo.' + v.ObjectName, v.ObjectType) IS NULL THEN 0 ELSE 1 END AS ExistsFlag
FROM
(
VALUES
(N'InformationProject_AccidentCauseReportItem', N'U'),
(N'InformationProject_ConstructionStandardSelectedItem', N'U'),
(N'InformationProject_DrillConductedQuarterlyReportItem', N'U'),
(N'InformationProject_DrillPlanHalfYearReportItem', N'U'),
(N'InformationProject_AccidentCauseReport', N'U'),
(N'InformationProject_ConstructionStandardIdentify', N'U'),
(N'InformationProject_DrillConductedQuarterlyReport', N'U'),
(N'InformationProject_DrillPlanHalfYearReport', N'U'),
(N'InformationProject_EPSummaryReport', N'U'),
(N'InformationProject_MillionsMonthlyReport', N'U'),
(N'InformationProject_SafetyQuarterlyReport', N'U'),
(N'InformationProject_WorkSummaryReport', N'U'),
(N'Law_LawRegulationIdentify', N'U'),
(N'View_InformationProject_ConstructionStandardSelectedItem', N'V'),
(N'View_InformationProject_ConstructionStandardIdentify', N'V')
) v(ObjectName, ObjectType);
/* 保留结果:以下对象均应为 1。 */
SELECT v.ObjectName,
CASE WHEN OBJECT_ID(N'dbo.' + v.ObjectName, v.ObjectType) IS NULL THEN 0 ELSE 1 END AS ExistsFlag
FROM
(
VALUES
(N'InformationProject_Notice', N'U'),
(N'InformationProject_Picture', N'U'),
(N'InformationProject_ProjectMap', N'U'),
(N'InformationProject_ReceiveFileManager', N'U'),
(N'Law_HSSEStandardsList', N'U'),
(N'Law_LawRegulationList', N'U'),
(N'Law_LawRegulationSelectedItem', N'U'),
(N'Law_ManageRule', N'U'),
(N'Law_RulesRegulations', N'U')
) v(ObjectName, ObjectType);
/* 菜单和权限残留均应为 0。 */
SELECT N'Sys_Menu' AS ObjectName, COUNT_BIG(*) AS Records
FROM dbo.Sys_Menu
WHERE MenuId IN (SELECT MenuId FROM @MenuIds)
OR Url LIKE N'HSSE/InformationProject/%'
UNION ALL
SELECT N'Sys_MenuFlowOperate', COUNT_BIG(*)
FROM dbo.Sys_MenuFlowOperate
WHERE MenuId IN (SELECT MenuId FROM @MenuIds)
UNION ALL
SELECT N'Sys_ButtonPower', COUNT_BIG(*)
FROM dbo.Sys_ButtonPower
WHERE MenuId IN (SELECT MenuId FROM @MenuIds)
OR ButtonToMenuId IN (SELECT MenuId FROM @MenuIds)
UNION ALL
SELECT N'Sys_RolePower', COUNT_BIG(*)
FROM dbo.Sys_RolePower
WHERE MenuId IN (SELECT MenuId FROM @MenuIds);
END TRY
BEGIN CATCH
IF XACT_STATE() <> 0
ROLLBACK TRANSACTION;
THROW;
END CATCH;