/* 清理范围: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;