804 lines
32 KiB
Transact-SQL
804 lines
32 KiB
Transact-SQL
|
|
/*
|
|||
|
|
陕化建施工管理系统安全管理收口清理脚本
|
|||
|
|
目标库:SGGLDB_SHJ
|
|||
|
|
|
|||
|
|
删除范围:
|
|||
|
|
- HSSE 安全管理中除人员信息、人员资质、培训/考试外的旧业务表;
|
|||
|
|
- 已确认下线的事故、行动计划、隐患、应急、环境、作业票、会议、职业健康、
|
|||
|
|
设备报批、质量设备/分包资质、方案、月报、实名制旧同步等专属表;
|
|||
|
|
- 安全专属基础字典、旧视图、旧存储过程及菜单权限残留。
|
|||
|
|
|
|||
|
|
明确保留:
|
|||
|
|
- SitePerson_*、Person_*、QualityAudit_PersonQuality、
|
|||
|
|
QualityAudit_SafePersonQuality、QualityAudit_EquipmentPersonQuality;
|
|||
|
|
- Training_*、Test_*、Person_Training*;
|
|||
|
|
- WBS_*、HJGL_*、焊接共享质量表及质量检查表;
|
|||
|
|
- InformationProject_Notice、InformationProject_ReceiveFileManager;
|
|||
|
|
- RealName_BasicData、RealName_City、RealName_Country;
|
|||
|
|
- Base_CompanyTemplate、Base_Train*、Base_WorkPost 等仍被保留模块使用的表。
|
|||
|
|
|
|||
|
|
说明:
|
|||
|
|
- 用户已确认数据库此前完成备份,本脚本不再执行备份。
|
|||
|
|
- 所有 DDL 在一个事务内执行;外键、视图、菜单权限均先处理。
|
|||
|
|
- 脚本可重复执行,不存在的目标对象自动跳过。
|
|||
|
|
- 不删除 SmartSite_*、Weather、Kqgl_DateManage 及人员/WBS/焊接/质量共享对象。
|
|||
|
|
*/
|
|||
|
|
USE [SGGLDB_SHJ];
|
|||
|
|
|
|||
|
|
SET NOCOUNT ON;
|
|||
|
|
SET XACT_ABORT ON;
|
|||
|
|
|
|||
|
|
IF DB_NAME() <> N'SGGLDB_SHJ'
|
|||
|
|
THROW 50000, N'当前数据库不是 SGGLDB_SHJ,已停止执行。', 1;
|
|||
|
|
|
|||
|
|
BEGIN TRY
|
|||
|
|
BEGIN TRANSACTION;
|
|||
|
|
|
|||
|
|
DECLARE @DropTables TABLE
|
|||
|
|
(
|
|||
|
|
TableName sysname NOT NULL PRIMARY KEY,
|
|||
|
|
DropOrder tinyint NOT NULL
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
INSERT INTO @DropTables (TableName, DropOrder)
|
|||
|
|
VALUES
|
|||
|
|
(N'Accident_AccidentHandle', 1),
|
|||
|
|
(N'Accident_AccidentPersonRecord', 1),
|
|||
|
|
(N'Accident_AccidentReport', 1),
|
|||
|
|
(N'Accident_AccidentReportOther', 1),
|
|||
|
|
(N'Accident_AccidentReportOtherItem', 1),
|
|||
|
|
(N'Accident_NoFourLetoff', 1),
|
|||
|
|
(N'ActionPlan_ActionPlanList', 1),
|
|||
|
|
(N'ActionPlan_ActionPlanListApprove', 1),
|
|||
|
|
(N'ActionPlan_CompanyManagerRule', 1),
|
|||
|
|
(N'ActionPlan_MainContract', 1),
|
|||
|
|
(N'ActionPlan_MainContractApprove', 1),
|
|||
|
|
(N'ActionPlan_MainContractOpinion', 1),
|
|||
|
|
(N'ActionPlan_ManagerRule', 1),
|
|||
|
|
(N'ActionPlan_ProjectManagerRule', 1),
|
|||
|
|
(N'ActionPlan_ProjectPlan', 1),
|
|||
|
|
(N'ActionPlan_ProjectPlanApprove', 1),
|
|||
|
|
(N'ActionPlan_ProjectPlanOpinion', 1),
|
|||
|
|
(N'Base_AccidentType', 1),
|
|||
|
|
(N'Base_EmergencyType', 1),
|
|||
|
|
(N'Base_HSSEStandardListType', 1),
|
|||
|
|
(N'Base_LawsRegulationsType', 1),
|
|||
|
|
(N'Base_LicenseType', 1),
|
|||
|
|
(N'Base_ManageRuleType', 1),
|
|||
|
|
(N'Base_RiskLevel', 1),
|
|||
|
|
(N'Base_SafetyMeasures', 1),
|
|||
|
|
(N'Base_SolutionTempleteType', 1),
|
|||
|
|
(N'Base_SpecialSchemeType', 1),
|
|||
|
|
(N'Base_SuperviseCheckType', 1),
|
|||
|
|
(N'Check_CheckColligation', 1),
|
|||
|
|
(N'Check_CheckColligationDetail', 1),
|
|||
|
|
(N'Check_CheckSpecial', 1),
|
|||
|
|
(N'Check_CheckSpecialDetail', 1),
|
|||
|
|
(N'Check_IncentiveNotice', 1),
|
|||
|
|
(N'Check_IncentiveNoticeFlowOperate', 1),
|
|||
|
|
(N'Check_PauseNotice', 1),
|
|||
|
|
(N'Check_PauseNoticeFlowOperate', 1),
|
|||
|
|
(N'Check_ProjectLeaderCheck', 1),
|
|||
|
|
(N'Check_PunishNotice', 1),
|
|||
|
|
(N'Check_PunishNoticeFlowOperate', 1),
|
|||
|
|
(N'Check_PunishNoticeItem', 1),
|
|||
|
|
(N'Check_RectifyNotices', 1),
|
|||
|
|
(N'Check_RectifyNoticesFlowOperate', 1),
|
|||
|
|
(N'Check_RectifyNoticesItem', 1),
|
|||
|
|
(N'CostGoods_CostManage', 1),
|
|||
|
|
(N'CostGoods_CostManageFlowOperate', 1),
|
|||
|
|
(N'CostGoods_CostManageItem', 1),
|
|||
|
|
(N'CostGoods_CostSmallDetail', 1),
|
|||
|
|
(N'CostGoods_CostSmallDetailItem', 1),
|
|||
|
|
(N'CostGoods_Expense', 1),
|
|||
|
|
(N'CostGoods_ExpenseDetail', 1),
|
|||
|
|
(N'DigData_HSEDataCollect', 1),
|
|||
|
|
(N'DigData_HSEDataCollectItem', 1),
|
|||
|
|
(N'DigData_HSEDataCollectSubmission', 1),
|
|||
|
|
(N'EduTrain_AccidentCase', 1),
|
|||
|
|
(N'EduTrain_AccidentCaseItem', 1),
|
|||
|
|
(N'EduTrain_TrainPersonRecord', 1),
|
|||
|
|
(N'EduTrain_TrainRecord', 1),
|
|||
|
|
(N'EduTrain_TrainRecordDetail', 1),
|
|||
|
|
(N'EduTrain_TrainTest', 1),
|
|||
|
|
(N'Emergency_DrillRecordList', 1),
|
|||
|
|
(N'Emergency_EmergencyList', 1),
|
|||
|
|
(N'Emergency_EmergencyProcess', 1),
|
|||
|
|
(N'Emergency_EmergencyProcessItem', 1),
|
|||
|
|
(N'Emergency_EmergencySupply', 1),
|
|||
|
|
(N'Emergency_EmergencyTeamAndTrain', 1),
|
|||
|
|
(N'Emergency_EmergencyTeamItem', 1),
|
|||
|
|
(N'Environmental_EIAReport', 1),
|
|||
|
|
(N'Environmental_EnvironmentalEmergencyPlan', 1),
|
|||
|
|
(N'Environmental_EnvironmentalMonitoring', 1),
|
|||
|
|
(N'Environmental_UnexpectedEnvironmental', 1),
|
|||
|
|
(N'EnvironmentalCheck', 1),
|
|||
|
|
(N'Hazard_EnvironmentalRiskItem', 1),
|
|||
|
|
(N'Hazard_EnvironmentalRiskList', 1),
|
|||
|
|
(N'Hazard_HazardList', 1),
|
|||
|
|
(N'Hazard_HazardSelectedItem', 1),
|
|||
|
|
(N'Hazard_RealTimeDevice', 1),
|
|||
|
|
(N'Hazard_RealTimeValue', 1),
|
|||
|
|
(N'HSSE_ConstructionRisk', 1),
|
|||
|
|
(N'HSSE_ConstructionRiskApprove', 1),
|
|||
|
|
(N'HSSE_ConstructionRiskCheck', 1),
|
|||
|
|
(N'HSSE_ConstructionRiskControl', 1),
|
|||
|
|
(N'HSSE_Hazard_HazardRegister', 1),
|
|||
|
|
(N'HSSE_Hazard_HazardRegisterTypes', 1),
|
|||
|
|
(N'HSSE_Weather', 1),
|
|||
|
|
(N'HSSEData_HiddenDangerDetail', 1),
|
|||
|
|
(N'HSSEData_HSSE', 1),
|
|||
|
|
(N'HSSESystem_HSSEMainDuty', 1),
|
|||
|
|
(N'HSSESystem_SafetyInstitution', 1),
|
|||
|
|
(N'InApproveManager_EquipmentIn', 1),
|
|||
|
|
(N'InApproveManager_EquipmentInItem', 1),
|
|||
|
|
(N'InApproveManager_EquipmentOut', 1),
|
|||
|
|
(N'InApproveManager_EquipmentOutItem', 1),
|
|||
|
|
(N'InApproveManager_EquipmentQualityIn', 1),
|
|||
|
|
(N'InApproveManager_EquipmentQualityInItem', 1),
|
|||
|
|
(N'InApproveManager_GeneralEquipmentIn', 1),
|
|||
|
|
(N'InApproveManager_GeneralEquipmentInItem', 1),
|
|||
|
|
(N'InApproveManager_GeneralEquipmentOut', 1),
|
|||
|
|
(N'InApproveManager_GeneralEquipmentOutItem', 1),
|
|||
|
|
(N'Information_MillionsMonthlyReport', 1),
|
|||
|
|
(N'Information_MillionsMonthlyReportItem', 1),
|
|||
|
|
(N'InformationProject_Picture', 1),
|
|||
|
|
(N'InformationProject_ProjectMap', 1),
|
|||
|
|
(N'Law_HSSEStandardsList', 1),
|
|||
|
|
(N'Law_LawRegulationList', 1),
|
|||
|
|
(N'Law_LawRegulationSelectedItem', 1),
|
|||
|
|
(N'Law_ManageRule', 1),
|
|||
|
|
(N'Law_RulesRegulations', 1),
|
|||
|
|
(N'License_BreakGround', 1),
|
|||
|
|
(N'License_FireWork', 1),
|
|||
|
|
(N'License_FlowOperate', 1),
|
|||
|
|
(N'License_FlowOperateItem', 1),
|
|||
|
|
(N'License_HeightWork', 1),
|
|||
|
|
(N'License_HSETechnical', 1),
|
|||
|
|
(N'License_LicenseItem', 1),
|
|||
|
|
(N'License_LicenseManager', 1),
|
|||
|
|
(N'License_LiftingWork', 1),
|
|||
|
|
(N'License_LimitedSpace', 1),
|
|||
|
|
(N'License_NightWork', 1),
|
|||
|
|
(N'License_OpenCircuit', 1),
|
|||
|
|
(N'License_RadialWork', 1),
|
|||
|
|
(N'Manager_CompletionReport', 1),
|
|||
|
|
(N'Meeting_AttendMeeting', 1),
|
|||
|
|
(N'Meeting_ClassMeeting', 1),
|
|||
|
|
(N'Meeting_MonthMeeting', 1),
|
|||
|
|
(N'Meeting_SafetyLeaderGroupMeeting', 1),
|
|||
|
|
(N'Meeting_SpecialMeeting', 1),
|
|||
|
|
(N'Meeting_WeekMeeting', 1),
|
|||
|
|
(N'OccupationHealth_HazardDetection', 1),
|
|||
|
|
(N'OccupationHealth_OccupationalDiseaseAccident', 1),
|
|||
|
|
(N'OccupationHealth_PhysicalExamination', 1),
|
|||
|
|
(N'ProcessControl_InspectionManagement', 1),
|
|||
|
|
(N'ProcessControl_InspectionManagementApprove', 1),
|
|||
|
|
(N'ProcessControl_InspectionManagementDetail', 1),
|
|||
|
|
(N'Project_HSEDiary', 1),
|
|||
|
|
(N'Project_HSSEData_HiddenDangerDetail', 1),
|
|||
|
|
(N'Project_HSSEData_HSSE', 1),
|
|||
|
|
(N'Project_SYHSEData_SYHSE', 1),
|
|||
|
|
(N'QualityAudit_EquipmentQuality', 1),
|
|||
|
|
(N'QualityAudit_EquipmentQualityAuditDetail', 1),
|
|||
|
|
(N'QualityAudit_GeneralEquipmentQuality', 1),
|
|||
|
|
(N'QualityAudit_SubUnitQuality', 1),
|
|||
|
|
(N'QualityAudit_SubUnitQualityAuditDetail', 1),
|
|||
|
|
(N'Resources_SignManage', 1),
|
|||
|
|
(N'SecuritySystem_SafetyOrganization', 1),
|
|||
|
|
(N'SeDin_MonthReport', 1),
|
|||
|
|
(N'SeDin_MonthReport1', 1),
|
|||
|
|
(N'SeDin_MonthReport10', 1),
|
|||
|
|
(N'SeDin_MonthReport11', 1),
|
|||
|
|
(N'SeDin_MonthReport12', 1),
|
|||
|
|
(N'SeDin_MonthReport2', 1),
|
|||
|
|
(N'SeDin_MonthReport3', 1),
|
|||
|
|
(N'SeDin_MonthReport4', 1),
|
|||
|
|
(N'SeDin_MonthReport4Other', 1),
|
|||
|
|
(N'SeDin_MonthReport5', 1),
|
|||
|
|
(N'SeDin_MonthReport6', 1),
|
|||
|
|
(N'SeDin_MonthReport7', 1),
|
|||
|
|
(N'SeDin_MonthReport8', 1),
|
|||
|
|
(N'SeDin_MonthReport8Item', 1),
|
|||
|
|
(N'SeDin_MonthReport9', 1),
|
|||
|
|
(N'SeDin_MonthReport9Item_Rectification', 1),
|
|||
|
|
(N'SeDin_MonthReport9Item_Special', 1),
|
|||
|
|
(N'SeDin_MonthReport9Item_Stoppage', 1),
|
|||
|
|
(N'SeDin_MonthReportFlowOperate', 1),
|
|||
|
|
(N'Solution_ConstructSolution', 1),
|
|||
|
|
(N'Solution_ExpertArgument', 1),
|
|||
|
|
(N'Solution_LargerHazard', 1),
|
|||
|
|
(N'Solution_LargerHazardList', 1),
|
|||
|
|
(N'Solution_LargerHazardListItem', 1),
|
|||
|
|
(N'Solution_SolutionTemplate', 1),
|
|||
|
|
(N'Solution_TemporaryElectricity', 1),
|
|||
|
|
(N'SYHSEData_Data', 1),
|
|||
|
|
(N'SYHSEData_HiddenDangerCheck', 1),
|
|||
|
|
(N'SYHSEData_RiskControl', 1),
|
|||
|
|
(N'SYHSEData_SYHSE', 1),
|
|||
|
|
(N'Technique_CheckItemDetail', 1),
|
|||
|
|
(N'Technique_CheckItemSet', 1),
|
|||
|
|
(N'Technique_Emergency', 1),
|
|||
|
|
(N'Technique_Environmental', 1),
|
|||
|
|
(N'Technique_HazardList', 1),
|
|||
|
|
(N'Technique_HazardListType', 1),
|
|||
|
|
(N'Technique_ProjectSolutionTemplete', 1),
|
|||
|
|
(N'Technique_Rectify', 1),
|
|||
|
|
(N'Technique_RectifyItem', 1),
|
|||
|
|
(N'Technique_SpecialScheme', 1),
|
|||
|
|
(N'RealName_CollTeam', 1),
|
|||
|
|
(N'RealName_PersonInOutNow', 1),
|
|||
|
|
(N'RealName_Project', 1),
|
|||
|
|
(N'RealName_PushLog', 1),
|
|||
|
|
(N'RealName_SynchroSet', 1);
|
|||
|
|
|
|||
|
|
DECLARE @DropViews TABLE
|
|||
|
|
(
|
|||
|
|
ViewName sysname NOT NULL PRIMARY KEY
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
INSERT INTO @DropViews (ViewName)
|
|||
|
|
VALUES
|
|||
|
|
(N'V_SeDin_MonthReport3'),
|
|||
|
|
(N'View_ActionPlan_ManagerRule'),
|
|||
|
|
(N'View_Check_CheckColligationDetail'),
|
|||
|
|
(N'View_CheckSpecialDetail'),
|
|||
|
|
(N'View_DataIn_MillionsMonthlyReport'),
|
|||
|
|
(N'View_DataStatistics'),
|
|||
|
|
(N'View_EduTrain_TrainFind'),
|
|||
|
|
(N'View_EduTrain_TrainRecordDetail'),
|
|||
|
|
(N'View_EduTrain_TrainTest'),
|
|||
|
|
(N'View_Emergency_EmergencyTeamItem'),
|
|||
|
|
(N'View_Hazard_EnvironmentalRiskItem'),
|
|||
|
|
(N'View_Hazard_HazardRegister'),
|
|||
|
|
(N'View_Hazard_HazardRegisterList'),
|
|||
|
|
(N'View_HSSESystem_SafetyInstitution'),
|
|||
|
|
(N'View_Information_MillionsMonthlyReport'),
|
|||
|
|
(N'View_Law_LawRegulationList'),
|
|||
|
|
(N'View_Law_LawRegulationSelectedItem'),
|
|||
|
|
(N'View_Law_ManageRule'),
|
|||
|
|
(N'View_Law_RulesRegulations'),
|
|||
|
|
(N'View_License_LicenseManager'),
|
|||
|
|
(N'View_Project_HSSEData_HSSE'),
|
|||
|
|
(N'View_QualityAudit_EquipmentQuality'),
|
|||
|
|
(N'View_QualityAudit_EquipmentQualityAuditDetail'),
|
|||
|
|
(N'View_QualityAudit_SubUnitQuality'),
|
|||
|
|
(N'View_QualityAudit_SubUnitQualityAuditDetail'),
|
|||
|
|
(N'View_Solution_LargerHazardListItem'),
|
|||
|
|
(N'View_Technique_Emergency'),
|
|||
|
|
(N'View_Technique_RectifyItem'),
|
|||
|
|
(N'View_Technique_SpecialScheme');
|
|||
|
|
|
|||
|
|
DECLARE @DropProcedures TABLE
|
|||
|
|
(
|
|||
|
|
ProcedureName sysname NOT NULL PRIMARY KEY
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
INSERT INTO @DropProcedures (ProcedureName)
|
|||
|
|
VALUES
|
|||
|
|
(N'Sp_DataStatistics'),
|
|||
|
|
(N'Sp_DigData_HSEDataCollect'),
|
|||
|
|
(N'Sp_Hazard_EnvironmentalRiskListReport'),
|
|||
|
|
(N'Sp_Hazard_EnvironmentalRiskListReportImportantItem'),
|
|||
|
|
(N'Sp_Hazard_EnvironmentalRiskListReportItem'),
|
|||
|
|
(N'Sp_Hazard_HazardListReport'),
|
|||
|
|
(N'Sp_Hazard_HazardSelectedItemImportantReport'),
|
|||
|
|
(N'Sp_Hazard_HazardSelectedItemReport'),
|
|||
|
|
(N'Sp_Project_GetToDoItems'),
|
|||
|
|
(N'SP_RectifyNoticesListByProjectStates'),
|
|||
|
|
(N'SpCheckColligationStatistic');
|
|||
|
|
|
|||
|
|
DECLARE @DropMenuIds TABLE
|
|||
|
|
(
|
|||
|
|
MenuId nvarchar(100) NOT NULL PRIMARY KEY
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
/* 删除已下线安全菜单;SitePerson 和人员资质菜单明确保留。 */
|
|||
|
|
INSERT INTO @DropMenuIds (MenuId)
|
|||
|
|
SELECT DISTINCT m.MenuId
|
|||
|
|
FROM dbo.Sys_Menu AS m
|
|||
|
|
WHERE
|
|||
|
|
(m.Url LIKE N'HSSE/%'
|
|||
|
|
AND m.Url NOT LIKE N'HSSE/SitePerson/%'
|
|||
|
|
AND m.Url NOT IN
|
|||
|
|
(
|
|||
|
|
N'HSSE/QualityAudit/PersonQuality.aspx',
|
|||
|
|
N'HSSE/QualityAudit/SafePersonQuality.aspx',
|
|||
|
|
N'HSSE/QualityAudit/EquipmentPersonQuality.aspx'
|
|||
|
|
))
|
|||
|
|
OR m.Url LIKE N'ZHGL/Plan/ActionPlan%'
|
|||
|
|
OR m.Url LIKE N'ZHGL/DataSync/HSSEData%'
|
|||
|
|
OR m.Url LIKE N'ZHGL/DataSync/SYHSEData%'
|
|||
|
|
OR m.Url LIKE N'ZHGL/DataSync/Project_HSSEData%'
|
|||
|
|
OR m.Url LIKE N'ZHGL/DataSync/DataStatistics%'
|
|||
|
|
OR m.Url LIKE N'/ZHGL/Supervise/%'
|
|||
|
|
OR m.Url LIKE N'CQMS/Technique/%'
|
|||
|
|
OR m.Url LIKE N'DigData/HSE%'
|
|||
|
|
OR m.Url LIKE N'DigData/TrainRecordAnalysis%'
|
|||
|
|
OR m.Url LIKE N'DigData/DailyProblemAnalysis%'
|
|||
|
|
OR m.Url LIKE N'DigData/RectifyProblemAnalysis%'
|
|||
|
|
OR m.Url LIKE N'%DataShow/%'
|
|||
|
|
OR m.Url LIKE N'%OfficeCheck%'
|
|||
|
|
OR m.Url LIKE N'%ProjectMap%'
|
|||
|
|
OR m.Url LIKE N'%PHTGL%'
|
|||
|
|
OR m.Url LIKE N'%JDGL%'
|
|||
|
|
OR m.Url LIKE N'%PZHGL%';
|
|||
|
|
|
|||
|
|
/* 同时收口只剩已删除子菜单的安全父节点,含保留子菜单的父节点不会被选中。 */
|
|||
|
|
WHILE 1 = 1
|
|||
|
|
BEGIN
|
|||
|
|
INSERT INTO @DropMenuIds (MenuId)
|
|||
|
|
SELECT DISTINCT parent_menu.MenuId
|
|||
|
|
FROM dbo.Sys_Menu AS parent_menu
|
|||
|
|
WHERE parent_menu.MenuId IN
|
|||
|
|
(
|
|||
|
|
SELECT child_menu.SuperMenu
|
|||
|
|
FROM dbo.Sys_Menu AS child_menu
|
|||
|
|
JOIN @DropMenuIds AS dropped_child
|
|||
|
|
ON dropped_child.MenuId = child_menu.MenuId
|
|||
|
|
WHERE child_menu.SuperMenu IS NOT NULL
|
|||
|
|
AND child_menu.SuperMenu <> N'0'
|
|||
|
|
)
|
|||
|
|
AND NOT EXISTS
|
|||
|
|
(
|
|||
|
|
SELECT 1
|
|||
|
|
FROM dbo.Sys_Menu AS child_menu
|
|||
|
|
WHERE child_menu.SuperMenu = parent_menu.MenuId
|
|||
|
|
AND NOT EXISTS
|
|||
|
|
(
|
|||
|
|
SELECT 1
|
|||
|
|
FROM @DropMenuIds AS dropped_child
|
|||
|
|
WHERE dropped_child.MenuId = child_menu.MenuId
|
|||
|
|
)
|
|||
|
|
)
|
|||
|
|
AND NOT EXISTS
|
|||
|
|
(
|
|||
|
|
SELECT 1
|
|||
|
|
FROM @DropMenuIds AS already_dropped
|
|||
|
|
WHERE already_dropped.MenuId = parent_menu.MenuId
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
IF @@ROWCOUNT = 0
|
|||
|
|
BREAK;
|
|||
|
|
END;
|
|||
|
|
|
|||
|
|
DECLARE @Sql nvarchar(max);
|
|||
|
|
DECLARE @ObjectDefinition nvarchar(max);
|
|||
|
|
DECLARE @StartPosition int;
|
|||
|
|
DECLARE @EndPosition int;
|
|||
|
|
|
|||
|
|
/* 人员列表视图原来引用已下线 EduTrain 表,保留视图并改用当前培训任务统计。 */
|
|||
|
|
IF OBJECT_ID(N'dbo.View_SitePerson_Person', N'V') IS NOT NULL
|
|||
|
|
BEGIN
|
|||
|
|
SET @ObjectDefinition = OBJECT_DEFINITION(OBJECT_ID(N'dbo.View_SitePerson_Person'));
|
|||
|
|
SET @ObjectDefinition = REPLACE(@ObjectDefinition, N'CREATE VIEW', N'ALTER VIEW');
|
|||
|
|
SET @StartPosition = CHARINDEX(N'(SELECT COUNT(*) FROM EduTrain_TrainRecordDetail', @ObjectDefinition);
|
|||
|
|
SET @EndPosition = CHARINDEX(N' AS TrainCount,', @ObjectDefinition, @StartPosition);
|
|||
|
|
|
|||
|
|
IF @StartPosition <= 0 OR @EndPosition <= @StartPosition
|
|||
|
|
THROW 50001, N'View_SitePerson_Person 未找到旧 EduTrain 统计片段,已停止执行。', 1;
|
|||
|
|
|
|||
|
|
SET @ObjectDefinition = STUFF
|
|||
|
|
(
|
|||
|
|
@ObjectDefinition,
|
|||
|
|
@StartPosition,
|
|||
|
|
@EndPosition - @StartPosition,
|
|||
|
|
N'(SELECT COUNT(*) FROM Training_Task AS T WHERE T.UserId = SitePerson.PersonId AND T.ProjectId = SitePerson.ProjectId)'
|
|||
|
|
);
|
|||
|
|
EXEC sys.sp_executesql @ObjectDefinition;
|
|||
|
|
END;
|
|||
|
|
|
|||
|
|
/* APP 待办只保留培训/考试、现场人员和人员资质待办。 */
|
|||
|
|
IF OBJECT_ID(N'dbo.Sp_APP_GetToDoItems', N'P') IS NOT NULL
|
|||
|
|
BEGIN
|
|||
|
|
SET @Sql = N'
|
|||
|
|
ALTER PROCEDURE dbo.Sp_APP_GetToDoItems
|
|||
|
|
@projectId NVARCHAR(50) = NULL,
|
|||
|
|
@personId NVARCHAR(200) = NULL
|
|||
|
|
AS
|
|||
|
|
BEGIN
|
|||
|
|
SELECT plans.PlanId AS DataId,
|
|||
|
|
''B782A26B-D85C-4F84-8B45-F7AA47B3159E'' AS MenuId,
|
|||
|
|
N''培训计划'' AS MenuName,
|
|||
|
|
plans.PlanName AS Content,
|
|||
|
|
persons.PersonId,
|
|||
|
|
persons.PersonName,
|
|||
|
|
plans.DesignerDate AS DataTime,
|
|||
|
|
CONVERT(varchar(100), plans.DesignerDate, 23) AS DataTimeStr,
|
|||
|
|
''/pages/train_task/train_index/main'' AS UrlStr,
|
|||
|
|
N'''' AS pcUrl
|
|||
|
|
FROM dbo.Training_Plan AS plans
|
|||
|
|
LEFT JOIN dbo.Person_Persons AS persons ON plans.DesignerId = persons.PersonId
|
|||
|
|
WHERE plans.ProjectId = @projectId
|
|||
|
|
AND (plans.States = ''0'' OR plans.States = ''1'')
|
|||
|
|
AND plans.DesignerId = @personId
|
|||
|
|
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT test_plan.TestPlanId AS DataId,
|
|||
|
|
''FAF7F4A4-A4BC-4D94-9E88-0CF5A380DB34'' AS MenuId,
|
|||
|
|
N''考试计划'' AS MenuName,
|
|||
|
|
test_plan.PlanName AS Content,
|
|||
|
|
persons.PersonId,
|
|||
|
|
persons.PersonName,
|
|||
|
|
test_plan.PlanDate AS DataTime,
|
|||
|
|
CONVERT(varchar(100), test_plan.PlanDate, 23) AS DataTimeStr,
|
|||
|
|
''/pages/train_task/test_list/main'' AS UrlStr,
|
|||
|
|
N'''' AS pcUrl
|
|||
|
|
FROM dbo.Training_TestPlan AS test_plan
|
|||
|
|
LEFT JOIN dbo.Person_Persons AS persons ON test_plan.PlanManId = persons.PersonId
|
|||
|
|
WHERE test_plan.ProjectId = @projectId
|
|||
|
|
AND (test_plan.States = ''0'' OR test_plan.States = ''1'')
|
|||
|
|
AND test_plan.PlanManId = @personId
|
|||
|
|
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT site_person.SitePersonId AS DataId,
|
|||
|
|
''EE260447-028F-46AF-8864-9A5DC9DAA5BD'' AS MenuId,
|
|||
|
|
N''现场人员'' AS MenuName,
|
|||
|
|
site_person.PersonName AS Content,
|
|||
|
|
persons.PersonId,
|
|||
|
|
persons.PersonName,
|
|||
|
|
site_person.InTime AS DataTime,
|
|||
|
|
CONVERT(varchar(100), site_person.InTime, 23) AS DataTimeStr,
|
|||
|
|
''/pages/info/people_detail/main'' AS UrlStr,
|
|||
|
|
N'''' AS pcUrl
|
|||
|
|
FROM dbo.SitePerson_Person AS site_person
|
|||
|
|
LEFT JOIN dbo.Person_Persons AS persons ON persons.PersonId = @personId
|
|||
|
|
WHERE site_person.ProjectId = @projectId
|
|||
|
|
AND site_person.States = ''1''
|
|||
|
|
AND site_person.AuditorId = @personId
|
|||
|
|
AND site_person.AuditorDate IS NULL
|
|||
|
|
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT quality.PersonQualityId AS DataId,
|
|||
|
|
''EBEA762D-1F46-47C5-9EAD-759E13D9B41C'' AS MenuId,
|
|||
|
|
N''特种作业人员'' AS MenuName,
|
|||
|
|
site_person.PersonName AS Content,
|
|||
|
|
persons.PersonId,
|
|||
|
|
persons.PersonName,
|
|||
|
|
quality.CompileDate AS DataTime,
|
|||
|
|
CONVERT(varchar(100), quality.CompileDate, 23) AS DataTimeStr,
|
|||
|
|
''/pages/info/speople_detail/main'' AS UrlStr,
|
|||
|
|
N'''' AS pcUrl
|
|||
|
|
FROM dbo.QualityAudit_PersonQuality AS quality
|
|||
|
|
LEFT JOIN dbo.SitePerson_Person AS site_person ON site_person.PersonId = quality.PersonId
|
|||
|
|
LEFT JOIN dbo.Person_Persons AS persons ON persons.PersonId = @personId
|
|||
|
|
WHERE site_person.ProjectId = @projectId
|
|||
|
|
AND quality.AuditorId = @personId
|
|||
|
|
AND quality.States = ''1''
|
|||
|
|
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT quality.SafePersonQualityId AS DataId,
|
|||
|
|
''750F5074-45B9-470E-AE1E-6204957421E6'' AS MenuId,
|
|||
|
|
N''安管人员'' AS MenuName,
|
|||
|
|
site_person.PersonName AS Content,
|
|||
|
|
persons.PersonId,
|
|||
|
|
persons.PersonName,
|
|||
|
|
quality.CompileDate AS DataTime,
|
|||
|
|
CONVERT(varchar(100), quality.CompileDate, 23) AS DataTimeStr,
|
|||
|
|
''/pages/info/speople_detail/main'' AS UrlStr,
|
|||
|
|
N'''' AS pcUrl
|
|||
|
|
FROM dbo.QualityAudit_SafePersonQuality AS quality
|
|||
|
|
LEFT JOIN dbo.SitePerson_Person AS site_person ON site_person.PersonId = quality.PersonId
|
|||
|
|
LEFT JOIN dbo.Person_Persons AS persons ON persons.PersonId = @personId
|
|||
|
|
WHERE site_person.ProjectId = @projectId
|
|||
|
|
AND quality.AuditorId = @personId
|
|||
|
|
AND quality.States = ''1''
|
|||
|
|
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT quality.EquipmentPersonQualityId AS DataId,
|
|||
|
|
''96FB96FF-20D8-4CE9-AF57-C19717BB5D3E'' AS MenuId,
|
|||
|
|
N''特种设备作业人员'' AS MenuName,
|
|||
|
|
site_person.PersonName AS Content,
|
|||
|
|
persons.PersonId,
|
|||
|
|
persons.PersonName,
|
|||
|
|
quality.CompileDate AS DataTime,
|
|||
|
|
CONVERT(varchar(100), quality.CompileDate, 23) AS DataTimeStr,
|
|||
|
|
''/pages/info/speople_detail/main'' AS UrlStr,
|
|||
|
|
N'''' AS pcUrl
|
|||
|
|
FROM dbo.QualityAudit_EquipmentPersonQuality AS quality
|
|||
|
|
LEFT JOIN dbo.SitePerson_Person AS site_person ON site_person.PersonId = quality.PersonId
|
|||
|
|
LEFT JOIN dbo.Person_Persons AS persons ON persons.PersonId = @personId
|
|||
|
|
WHERE site_person.ProjectId = @projectId
|
|||
|
|
AND quality.AuditorId = @personId
|
|||
|
|
AND quality.States = ''1''
|
|||
|
|
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT task.TaskId AS DataId,
|
|||
|
|
''E108F75D-89D0-4DCA-8356-A156C328805C'' AS MenuId,
|
|||
|
|
N''培训任务'' AS MenuName,
|
|||
|
|
plan_info.PlanName AS Content,
|
|||
|
|
persons.PersonId,
|
|||
|
|
persons.PersonName,
|
|||
|
|
task.TaskDate AS DataTime,
|
|||
|
|
CONVERT(varchar(100), task.TaskDate, 23) AS DataTimeStr,
|
|||
|
|
''/pages/train_task/task_list/main'' AS UrlStr,
|
|||
|
|
N'''' AS pcUrl
|
|||
|
|
FROM dbo.Training_Task AS task
|
|||
|
|
LEFT JOIN dbo.Person_Persons AS persons ON persons.PersonId = @personId
|
|||
|
|
LEFT JOIN dbo.Training_Plan AS plan_info ON plan_info.PlanId = task.PlanId
|
|||
|
|
WHERE task.ProjectId = @projectId
|
|||
|
|
AND (task.States IS NULL OR task.States != ''2'')
|
|||
|
|
AND task.UserId = @personId
|
|||
|
|
ORDER BY DataTime DESC;
|
|||
|
|
END;';
|
|||
|
|
EXEC sys.sp_executesql @Sql;
|
|||
|
|
END;
|
|||
|
|
|
|||
|
|
IF OBJECT_ID(N'dbo.View_APP_GetToDoItems', N'V') IS NOT NULL
|
|||
|
|
BEGIN
|
|||
|
|
SET @Sql = N'
|
|||
|
|
ALTER VIEW dbo.View_APP_GetToDoItems
|
|||
|
|
AS
|
|||
|
|
SELECT ProjectId, PersonId, PersonName, MenuName
|
|||
|
|
FROM
|
|||
|
|
(
|
|||
|
|
SELECT plans.PlanId AS DataId, N''培训计划'' AS MenuName,
|
|||
|
|
persons.PersonId, persons.PersonName, plans.ProjectId
|
|||
|
|
FROM dbo.Training_Plan AS plans
|
|||
|
|
LEFT JOIN dbo.Person_Persons AS persons ON plans.DesignerId = persons.PersonId
|
|||
|
|
WHERE persons.PersonId IS NOT NULL AND (plans.States = ''0'' OR plans.States = ''1'')
|
|||
|
|
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT test_plan.TestPlanId AS DataId, N''考试计划'' AS MenuName,
|
|||
|
|
persons.PersonId, persons.PersonName, test_plan.ProjectId
|
|||
|
|
FROM dbo.Training_TestPlan AS test_plan
|
|||
|
|
LEFT JOIN dbo.Person_Persons AS persons ON test_plan.PlanManId = persons.PersonId
|
|||
|
|
WHERE persons.PersonId IS NOT NULL AND (test_plan.States = ''0'' OR test_plan.States = ''1'')
|
|||
|
|
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT site_person.SitePersonId AS DataId, N''现场人员'' AS MenuName,
|
|||
|
|
persons.PersonId, persons.PersonName, site_person.ProjectId
|
|||
|
|
FROM dbo.SitePerson_Person AS site_person
|
|||
|
|
LEFT JOIN dbo.Person_Persons AS persons ON site_person.AuditorId = persons.PersonId
|
|||
|
|
WHERE persons.PersonId IS NOT NULL AND site_person.States = ''0''
|
|||
|
|
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT quality.PersonQualityId AS DataId, N''特种作业人员'' AS MenuName,
|
|||
|
|
persons.PersonId, persons.PersonName, site_person.ProjectId
|
|||
|
|
FROM dbo.QualityAudit_PersonQuality AS quality
|
|||
|
|
LEFT JOIN dbo.SitePerson_Person AS site_person ON site_person.PersonId = quality.PersonId
|
|||
|
|
LEFT JOIN dbo.Person_Persons AS persons ON persons.PersonId = quality.AuditorId
|
|||
|
|
WHERE persons.PersonId IS NOT NULL AND quality.States = ''1''
|
|||
|
|
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT quality.SafePersonQualityId AS DataId, N''安管人员'' AS MenuName,
|
|||
|
|
persons.PersonId, persons.PersonName, site_person.ProjectId
|
|||
|
|
FROM dbo.QualityAudit_SafePersonQuality AS quality
|
|||
|
|
LEFT JOIN dbo.SitePerson_Person AS site_person ON site_person.PersonId = quality.PersonId
|
|||
|
|
LEFT JOIN dbo.Person_Persons AS persons ON persons.PersonId = quality.AuditorId
|
|||
|
|
WHERE persons.PersonId IS NOT NULL AND quality.States = ''1''
|
|||
|
|
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT quality.EquipmentPersonQualityId AS DataId, N''特种设备作业人员'' AS MenuName,
|
|||
|
|
persons.PersonId, persons.PersonName, site_person.ProjectId
|
|||
|
|
FROM dbo.QualityAudit_EquipmentPersonQuality AS quality
|
|||
|
|
LEFT JOIN dbo.SitePerson_Person AS site_person ON site_person.PersonId = quality.PersonId
|
|||
|
|
LEFT JOIN dbo.Person_Persons AS persons ON persons.PersonId = quality.AuditorId
|
|||
|
|
WHERE persons.PersonId IS NOT NULL AND quality.States = ''1''
|
|||
|
|
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT task.TaskId AS DataId, N''培训任务'' AS MenuName,
|
|||
|
|
persons.PersonId, persons.PersonName, task.ProjectId
|
|||
|
|
FROM dbo.Training_Task AS task
|
|||
|
|
LEFT JOIN dbo.Person_Persons AS persons ON persons.PersonId = task.UserId
|
|||
|
|
WHERE persons.PersonId IS NOT NULL AND (task.States IS NULL OR task.States != ''2'')
|
|||
|
|
) AS V;';
|
|||
|
|
EXEC sys.sp_executesql @Sql;
|
|||
|
|
END;
|
|||
|
|
|
|||
|
|
/* 质量待办过程保留质量检查分支,去掉已确认删除的施工方案分支。 */
|
|||
|
|
DECLARE @ProcedureName sysname;
|
|||
|
|
DECLARE @SolutionPosition int;
|
|||
|
|
DECLARE procedure_cursor CURSOR LOCAL FAST_FORWARD FOR
|
|||
|
|
SELECT ProcedureName
|
|||
|
|
FROM (VALUES
|
|||
|
|
(N'SpAuditingManage'),
|
|||
|
|
(N'SpAuditingManageByProjectId'),
|
|||
|
|
(N'SpNotice'),
|
|||
|
|
(N'SpNoticeByProjectId')
|
|||
|
|
) AS names(ProcedureName)
|
|||
|
|
WHERE OBJECT_ID(N'dbo.' + names.ProcedureName, N'P') IS NOT NULL;
|
|||
|
|
|
|||
|
|
OPEN procedure_cursor;
|
|||
|
|
FETCH NEXT FROM procedure_cursor INTO @ProcedureName;
|
|||
|
|
WHILE @@FETCH_STATUS = 0
|
|||
|
|
BEGIN
|
|||
|
|
SET @ObjectDefinition = OBJECT_DEFINITION(OBJECT_ID(N'dbo.' + @ProcedureName));
|
|||
|
|
IF CHARINDEX(N'Solution_CQMSConstructSolution', @ObjectDefinition) > 0
|
|||
|
|
BEGIN
|
|||
|
|
SET @ObjectDefinition = REPLACE(@ObjectDefinition, N'CREATE PROCEDURE', N'ALTER PROCEDURE');
|
|||
|
|
SET @SolutionPosition = CHARINDEX(N'Solution_CQMSConstructSolution', @ObjectDefinition);
|
|||
|
|
SET @StartPosition = @SolutionPosition;
|
|||
|
|
WHILE @StartPosition > 1
|
|||
|
|
AND SUBSTRING(@ObjectDefinition, @StartPosition, 5) <> N'UNION'
|
|||
|
|
BEGIN
|
|||
|
|
SET @StartPosition = @StartPosition - 1;
|
|||
|
|
END;
|
|||
|
|
|
|||
|
|
SET @EndPosition = CHARINDEX(N'UNION', @ObjectDefinition, @SolutionPosition);
|
|||
|
|
IF @EndPosition <= @StartPosition
|
|||
|
|
SET @EndPosition = CHARINDEX(N'END', @ObjectDefinition, @SolutionPosition);
|
|||
|
|
IF @StartPosition <= 0 OR @EndPosition <= @StartPosition
|
|||
|
|
THROW 50002, N'质量待办过程的施工方案分支定位失败,已停止执行。', 1;
|
|||
|
|
|
|||
|
|
SET @ObjectDefinition = STUFF(@ObjectDefinition, @StartPosition, @EndPosition - @StartPosition, N'');
|
|||
|
|
EXEC sys.sp_executesql @ObjectDefinition;
|
|||
|
|
END;
|
|||
|
|
FETCH NEXT FROM procedure_cursor INTO @ProcedureName;
|
|||
|
|
END;
|
|||
|
|
CLOSE procedure_cursor;
|
|||
|
|
DEALLOCATE procedure_cursor;
|
|||
|
|
|
|||
|
|
/* 删除菜单及其按钮、角色授权、流程操作残留。 */
|
|||
|
|
DELETE FROM dbo.Sys_MenuFlowOperate
|
|||
|
|
WHERE MenuId IN (SELECT MenuId FROM @DropMenuIds);
|
|||
|
|
|
|||
|
|
DELETE FROM dbo.Sys_ButtonToMenu
|
|||
|
|
WHERE MenuId IN (SELECT MenuId FROM @DropMenuIds)
|
|||
|
|
OR ButtonToMenuId IN (SELECT MenuId FROM @DropMenuIds);
|
|||
|
|
|
|||
|
|
DELETE FROM dbo.Sys_ButtonPower
|
|||
|
|
WHERE MenuId IN (SELECT MenuId FROM @DropMenuIds)
|
|||
|
|
OR ButtonToMenuId IN (SELECT MenuId FROM @DropMenuIds);
|
|||
|
|
|
|||
|
|
DELETE FROM dbo.Sys_RolePower
|
|||
|
|
WHERE MenuId IN (SELECT MenuId FROM @DropMenuIds);
|
|||
|
|
|
|||
|
|
DELETE FROM dbo.Sys_Menu
|
|||
|
|
WHERE MenuId IN (SELECT MenuId FROM @DropMenuIds);
|
|||
|
|
|
|||
|
|
/* 先删除旧视图和纯安全存储过程。 */
|
|||
|
|
DECLARE @ViewName sysname;
|
|||
|
|
DECLARE view_cursor CURSOR LOCAL FAST_FORWARD FOR
|
|||
|
|
SELECT ViewName
|
|||
|
|
FROM @DropViews
|
|||
|
|
WHERE OBJECT_ID(N'dbo.' + ViewName, N'V') IS NOT NULL;
|
|||
|
|
|
|||
|
|
OPEN view_cursor;
|
|||
|
|
FETCH NEXT FROM view_cursor INTO @ViewName;
|
|||
|
|
WHILE @@FETCH_STATUS = 0
|
|||
|
|
BEGIN
|
|||
|
|
SET @Sql = N'DROP VIEW dbo.' + QUOTENAME(@ViewName) + N';';
|
|||
|
|
EXEC sys.sp_executesql @Sql;
|
|||
|
|
FETCH NEXT FROM view_cursor INTO @ViewName;
|
|||
|
|
END;
|
|||
|
|
CLOSE view_cursor;
|
|||
|
|
DEALLOCATE view_cursor;
|
|||
|
|
|
|||
|
|
DECLARE procedure_drop_cursor CURSOR LOCAL FAST_FORWARD FOR
|
|||
|
|
SELECT ProcedureName
|
|||
|
|
FROM @DropProcedures
|
|||
|
|
WHERE OBJECT_ID(N'dbo.' + ProcedureName, N'P') IS NOT NULL;
|
|||
|
|
|
|||
|
|
OPEN procedure_drop_cursor;
|
|||
|
|
FETCH NEXT FROM procedure_drop_cursor INTO @ProcedureName;
|
|||
|
|
WHILE @@FETCH_STATUS = 0
|
|||
|
|
BEGIN
|
|||
|
|
SET @Sql = N'DROP PROCEDURE dbo.' + QUOTENAME(@ProcedureName) + N';';
|
|||
|
|
EXEC sys.sp_executesql @Sql;
|
|||
|
|
FETCH NEXT FROM procedure_drop_cursor INTO @ProcedureName;
|
|||
|
|
END;
|
|||
|
|
CLOSE procedure_drop_cursor;
|
|||
|
|
DEALLOCATE procedure_drop_cursor;
|
|||
|
|
|
|||
|
|
/* 删除所有与目标表有关的外键,包括保留表指向目标表的外键。 */
|
|||
|
|
DECLARE @ForeignKeyName sysname;
|
|||
|
|
DECLARE @ChildSchemaName sysname;
|
|||
|
|
DECLARE @ChildTableName sysname;
|
|||
|
|
DECLARE fk_cursor CURSOR LOCAL FAST_FORWARD FOR
|
|||
|
|
SELECT fk.name,
|
|||
|
|
child_schema.name,
|
|||
|
|
child_table.name
|
|||
|
|
FROM sys.foreign_keys AS fk
|
|||
|
|
JOIN sys.tables AS child_table
|
|||
|
|
ON child_table.object_id = fk.parent_object_id
|
|||
|
|
JOIN sys.schemas AS child_schema
|
|||
|
|
ON child_schema.schema_id = child_table.schema_id
|
|||
|
|
JOIN sys.tables AS referenced_table
|
|||
|
|
ON referenced_table.object_id = fk.referenced_object_id
|
|||
|
|
WHERE EXISTS
|
|||
|
|
(
|
|||
|
|
SELECT 1 FROM @DropTables AS d
|
|||
|
|
WHERE d.TableName = child_table.name
|
|||
|
|
)
|
|||
|
|
OR EXISTS
|
|||
|
|
(
|
|||
|
|
SELECT 1 FROM @DropTables AS d
|
|||
|
|
WHERE d.TableName = referenced_table.name
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
OPEN fk_cursor;
|
|||
|
|
FETCH NEXT FROM fk_cursor INTO @ForeignKeyName, @ChildSchemaName, @ChildTableName;
|
|||
|
|
WHILE @@FETCH_STATUS = 0
|
|||
|
|
BEGIN
|
|||
|
|
SET @Sql = N'ALTER TABLE ' + QUOTENAME(@ChildSchemaName) + N'.' + QUOTENAME(@ChildTableName)
|
|||
|
|
+ N' DROP CONSTRAINT ' + QUOTENAME(@ForeignKeyName) + N';';
|
|||
|
|
EXEC sys.sp_executesql @Sql;
|
|||
|
|
FETCH NEXT FROM fk_cursor INTO @ForeignKeyName, @ChildSchemaName, @ChildTableName;
|
|||
|
|
END;
|
|||
|
|
CLOSE fk_cursor;
|
|||
|
|
DEALLOCATE fk_cursor;
|
|||
|
|
|
|||
|
|
/* 删除目标表。 */
|
|||
|
|
DECLARE @TableName sysname;
|
|||
|
|
DECLARE table_cursor CURSOR LOCAL FAST_FORWARD FOR
|
|||
|
|
SELECT TableName
|
|||
|
|
FROM @DropTables
|
|||
|
|
ORDER BY DropOrder, TableName;
|
|||
|
|
|
|||
|
|
OPEN table_cursor;
|
|||
|
|
FETCH NEXT FROM table_cursor INTO @TableName;
|
|||
|
|
WHILE @@FETCH_STATUS = 0
|
|||
|
|
BEGIN
|
|||
|
|
IF OBJECT_ID(N'dbo.' + @TableName, N'U') IS NOT NULL
|
|||
|
|
BEGIN
|
|||
|
|
SET @Sql = N'DROP TABLE dbo.' + QUOTENAME(@TableName) + N';';
|
|||
|
|
EXEC sys.sp_executesql @Sql;
|
|||
|
|
END;
|
|||
|
|
FETCH NEXT FROM table_cursor INTO @TableName;
|
|||
|
|
END;
|
|||
|
|
CLOSE table_cursor;
|
|||
|
|
DEALLOCATE table_cursor;
|
|||
|
|
|
|||
|
|
COMMIT TRANSACTION;
|
|||
|
|
|
|||
|
|
/* 执行后核验:目标对象应为 0,保留对象仍存在。 */
|
|||
|
|
SELECT d.TableName AS ObjectName,
|
|||
|
|
CASE WHEN OBJECT_ID(N'dbo.' + d.TableName, N'U') IS NULL THEN 0 ELSE 1 END AS ExistsFlag
|
|||
|
|
FROM @DropTables AS d
|
|||
|
|
ORDER BY d.TableName;
|
|||
|
|
|
|||
|
|
SELECT v.ViewName AS ObjectName,
|
|||
|
|
CASE WHEN OBJECT_ID(N'dbo.' + v.ViewName, N'V') IS NULL THEN 0 ELSE 1 END AS ExistsFlag
|
|||
|
|
FROM @DropViews AS v
|
|||
|
|
ORDER BY v.ViewName;
|
|||
|
|
|
|||
|
|
SELECT p.ProcedureName AS ObjectName,
|
|||
|
|
CASE WHEN OBJECT_ID(N'dbo.' + p.ProcedureName, N'P') IS NULL THEN 0 ELSE 1 END AS ExistsFlag
|
|||
|
|
FROM @DropProcedures AS p
|
|||
|
|
ORDER BY p.ProcedureName;
|
|||
|
|
|
|||
|
|
SELECT N'DroppedMenuRows' AS Metric, COUNT_BIG(*) AS Value
|
|||
|
|
FROM @DropMenuIds;
|
|||
|
|
|
|||
|
|
SELECT N'Retained_SitePerson_Person' AS ObjectName,
|
|||
|
|
CASE WHEN OBJECT_ID(N'dbo.SitePerson_Person', N'U') IS NULL THEN 0 ELSE 1 END AS ExistsFlag
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT N'Retained_Person_Persons', CASE WHEN OBJECT_ID(N'dbo.Person_Persons', N'U') IS NULL THEN 0 ELSE 1 END
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT N'Retained_Training_Plan', CASE WHEN OBJECT_ID(N'dbo.Training_Plan', N'U') IS NULL THEN 0 ELSE 1 END
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT N'Retained_Training_TestRecord', CASE WHEN OBJECT_ID(N'dbo.Training_TestRecord', N'U') IS NULL THEN 0 ELSE 1 END
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT N'Retained_WBS_UnitWork', CASE WHEN OBJECT_ID(N'dbo.WBS_UnitWork', N'U') IS NULL THEN 0 ELSE 1 END
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT N'Retained_HJGL_WeldingDaily', CASE WHEN OBJECT_ID(N'dbo.HJGL_WeldingDaily', N'U') IS NULL THEN 0 ELSE 1 END
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT N'Retained_QualityAudit_PersonQuality', CASE WHEN OBJECT_ID(N'dbo.QualityAudit_PersonQuality', N'U') IS NULL THEN 0 ELSE 1 END;
|
|||
|
|
|
|||
|
|
SELECT N'View_APP_GetToDoItems_TargetReferenceCount' AS Metric,
|
|||
|
|
COUNT(*) AS Value
|
|||
|
|
FROM sys.sql_expression_dependencies AS d
|
|||
|
|
WHERE d.referencing_id = OBJECT_ID(N'dbo.View_APP_GetToDoItems')
|
|||
|
|
AND d.referenced_entity_name IN
|
|||
|
|
(
|
|||
|
|
SELECT TableName FROM @DropTables
|
|||
|
|
UNION ALL SELECT ViewName FROM @DropViews
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
SELECT N'Sp_APP_GetToDoItems_TargetReferenceCount' AS Metric,
|
|||
|
|
COUNT(*) AS Value
|
|||
|
|
FROM sys.sql_expression_dependencies AS d
|
|||
|
|
WHERE d.referencing_id = OBJECT_ID(N'dbo.Sp_APP_GetToDoItems')
|
|||
|
|
AND d.referenced_entity_name IN
|
|||
|
|
(
|
|||
|
|
SELECT TableName FROM @DropTables
|
|||
|
|
UNION ALL SELECT ViewName FROM @DropViews
|
|||
|
|
);
|
|||
|
|
END TRY
|
|||
|
|
BEGIN CATCH
|
|||
|
|
IF XACT_STATE() <> 0
|
|||
|
|
ROLLBACK TRANSACTION;
|
|||
|
|
THROW;
|
|||
|
|
END CATCH;
|