Törölt erőforrások naptár adatának végleges törlése

Egy Opcenter konfiguráció felépítésekor előfordulhat, hogy bizonyos erőforrásokra már nincs szükségünk a modellben, így töröljük azokat. Ilyenkor a törölt erőforrásokhoz rendelt naptáradatok törlését automatikusan felajánlja a rendszer az ütemező (Sequencer) megnyitásakor:

Calendar data exists for one or more resources that do not exist in this configuration.
If these resources have been deleted you may safely delete the calendar data.

Do you wish to delete the calendar data for these resources?

Azonban néha ezt a törlést mégsem tudja elvégezni, és így minden megnyitáskor felteszi a kérdést.

Ennek oka, hogy a rendszer nem tisztítja meg a PrimaryCalendarPeriods (elsődleges erőforrás naptárak táblája) és a SecondaryCalendarPeriods (másodlagos erőforrás naptárak táblája) táblákat, hogyha az erőforrások vagy másodlagos kényszerek törlésre kerültek.

Az alábbiakban egy-egy olyan lekérdezést láthatunk, amelyet futtatva a fölösleges rekordokat törölhetjük ezekből a táblákból. (Óvatosságból érdemes lehet a törlés előtt egy biztonsági másolatot készíteni róluk.)

A lekérdezések lényege, hogy minden rekordot törölnek a PrimaryCalendarPeriods táblából, amely olyan erőforrásra hivatkozik az elsődleges kulcsában, ami már nem létezik a Resources táblában. Hasonlóan járunk el a SecondaryCalendarPeriods tábla esetén is, de itt a SecondaryConstraints táblában vizsgáljuk az elsődleges kulcsok létezését.

A lekérdezések futtathatók a Microsoft SQL Management Studio szoftverből.

A PrimaryCalendarPeriods táblát megtisztító lekérdezés: (YourDatabaseName helyére az Opcenter konfiguráció adatbázisának nevét kell írni.)

USE [YourDatabaseName]

DECLARE @DatasetId INT

SET @DatasetId = (SELECT DatasetId FROM UserData.Orders_Dataset WHERE name = ‘Schedule’)

DELETE FROM [UserData].[PrimaryCalendarPeriods]

  WHERE [UserData].[PrimaryCalendarPeriods].[Resource] NOT IN (SELECT [UserData].[Resources].[ResourcesId] FROM [UserData].[Resources])

  AND DatasetId=@DatasetId

A SecondaryCalendarPeriods táblát megtisztító lekérdezés: (YourDatabaseName helyére az Opcenter konfiguráció adatbázisának nevét kell írni.)

USE [YourDatabaseName]
DECLARE @DatasetId INT
SET @DatasetId = (SELECT DatasetId FROM UserData.Orders_Dataset WHERE name = ‘Schedule’)

DELETE FROM [UserData].[SecondaryCalendarPeriods]
WHERE [UserData].[SecondaryCalendarPeriods].[Resource] NOT IN (SELECT [UserData].[SecondaryConstraints].[SecondaryConstraintsId] FROM [UserData].[SecondaryConstraints])
AND DatasetId=@DatasetId

A lekérdezések futtatása után többé nem látjuk a beakadt figyelmeztetést az ütemezőbe való belépéskor.

Leave a Reply