- Inhaltsverzeichnis
- Compass SQL - Scripte
- Papierkorb löschen
- Finden doppelter Datensätze:
- ????
- ????
- ????
- alles übertragen von ALT nach NEU (gleiche Struktur):
- ????
- Finden aller (mehrfachen) IDENT mit REVISION = 1 oder 01
- Liste aller Komponenten die in einer Baugruppe verbaut sind mit Statuskey00003:
- Alles was NULL (Leer) Ist aus der REVISION Aufliste
- Und auf Startwert 00 setzen
- Datenbak reparieren
- ????
- CheckCompass
- Tabelle erweitern
- Abgleich IDW in DOCUMENT
- Abgleich IDW in ELEMENT
- Trigger Update Status
- SET_FILE_SHARE_WITH
- InsertDocumentsIntoAllLocations
- Repl Status
- Einsame IPTs
- Aufheben der Replikation
- Abgleich Karten 1.1
- Frei
- Frei
Compass SQL - Scripte¶
Anbei eine Auflistung nützlicher SQL Scripte im Compass Umfeld.
Die Scripte sind als Beispiel anzusehen !
Der Einsatz erfolgt aus eigenen Gefahr !!
Papierkorb löschen¶
select ENTITY_TYPE,count(*) from ELEMENT
where DELETE_DATE is not null
group by ENTITY_TYPE
--
--
-- purge all deleted document
--
delete from HISTORY_DOCUMENT
where PARENT_AIMKEY in
(select AIMKEY from ELEMENT
where DELETE_DATE is not null
and ENTITY_TYPE in ('AIM.DOC.ENG','AIM.DOC.OFF','AIM.DOC.SECONDARY') and (CHANGE_USER = 'Username') )
GO
--
--
--
delete from XREF_ELEMENT
where PARENT_AIMKEY in
(select AIMKEY from ELEMENT
where DELETE_DATE is not null
and ENTITY_TYPE in ('AIM.DOC.ENG','AIM.DOC.OFF','AIM.DOC.SECONDARY')and (CHANGE_USER = 'Username'))
GO
--
--
--
delete from XREF_ELEMENT
where CHILD_AIMKEY in
(select AIMKEY from ELEMENT
where DELETE_DATE is not null
and ENTITY_TYPE in ('AIM.DOC.ENG','AIM.DOC.OFF','AIM.DOC.SECONDARY')and (CHANGE_USER = 'Username'))
GO
--
--
--
delete from DOCUMENT
where AIMKEY in
(select AIMKEY from ELEMENT
where DELETE_DATE is not null
and ENTITY_TYPE in ('AIM.DOC.ENG','AIM.DOC.OFF','AIM.DOC.SECONDARY') and (CHANGE_USER = 'Username' ))
GO
--
--
--
delete from ELEMENT
where DELETE_DATE is not null
and ENTITY_TYPE in ('AIM.DOC.ENG','AIM.DOC.OFF','AIM.DOC.SECONDARY') and (CHANGE_USER = 'Username' )
Finden doppelter Datensätze:¶
select ident,revision, count(*) from compass_pro_textar.history_document group by ident,revision having count(*)>1
????¶
select * from VIEW_DOCUMENT_ENGINEERING d where PART_NUMBER like '412%' and FILE_TYPE='A' and FILE_UTC>07/07/2004 and CUSTOM_1_SHORT like '\\CAD1%' and d.CUSTOM_1_SHORT in (select CUSTOM_1_SHORT from VIEW_DOCUMENT_ENGINEERING group by CUSTOM_1_SHORT having count(*) >1) order by d.CUSTOM_1_SHORT
????¶
select count() from (select count() num from part group by ident)
where num > 1
????¶
select sum(num-1) from (select count(*) num from part group by ident) where num > 1
alles übertragen von ALT nach NEU (gleiche Struktur):¶
INSERT into NEU select * from ALT
????¶
exec sp_changeobjectowner '[COMPASS].[aim_RPF_element]','dbo'
exec sp_changeobjectowner '[COMPASS].[aim_RPF_xref_element]','dbo'
Finden aller (mehrfachen) IDENT mit REVISION = 1 oder 01¶
SELECT * FROM
DOCUMENT
WHERE
IDENT IN (
SELECT d.IDENT
FROM DOCUMENT d
WHERE ISNUMERIC=1
AND IDENT IN (
SELECT IDENT
FROM DOCUMENT
GROUP BY IDENT
HAVING COUNT>1
)
GROUP BY IDENT, CAST
HAVING count(1)>1
)
Liste aller Komponenten die in einer Baugruppe verbaut sind mit Statuskey00003:¶
select * from VIEW_DOCUMENT_ENGINEERING where STATUSKEY<>'00003' and AIMKEY in (select X_CHILD_AIMKEY from VIEW_XREF_PARENT_DOCUMENT where X_RELATIONSHIP_ID='AIM.XREF.DOC.ENG' and STATUSKEY='00003')
select PART_NUMBER, STATUSKEY
from VIEW_DOCUMENT_ENGINEERING
where STATUSKEY<>'00003' and AIMKEY in (select X_CHILD_AIMKEY
from VIEW_XREF_PARENT_DOCUMENT
where X_RELATIONSHIP_ID='AIM.XREF.DOC.ENG' and STATUSKEY='00003')
Alles was NULL (Leer) Ist aus der REVISION Aufliste¶
SELECT REVISION FROM DOCUMENT
WHERE REVISION IS NULL
ORDER BY REVISION
---
Und auf Startwert 00 setzen ¶
UPDATE DOCUMENT
SET REVISION = '00'
WHERE REVISION IS NULL
Datenbak reparieren¶
Folgenden Script ermitteln Sie die fehlerverdächtige Datenbank(en) auf dem Server:
SELECT DBName=NAME, [Status]=state_desc
FROM master.sys.databases
WHERE state_desc='SUSPECT'
Im nächsten Schritt setzen Sie bringen Sie die Datenbank in den Notfallmodus, setzen dann
Zugriff auf EInzelbenutzermodus und führen ein Prüfung der Datenbank durch:
USE master;
GO
ALTER DATABASE [DATABASENAME] SET EMERGENCY
GO
ALTER DATABASE [DATABASENAME] SET SINGLE_USER
GO
DBCC CHECKDB ([DATABASENAME], REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS;
GO
Anschließend wird nochmals eine Prüfung der Datenbank durchgeführt:
USE [DATABASENAME]
GO
DBCC CHECKDB WITH NO_INFOMSGS;
GO
Wenn diese letzte Prüfung fehlerfrei ausgeführt wurde, befindet sich die Datenbank immer
noch im Einzelbenutzermodus. Die Modus Umschaltung auf den Mehrfachbenutzermodus wird mit
folgendem Script durchgeführt:
USE master;
GO
ALTER DATABASE [DATABASENAME] SET MULTI_USER
GO
????¶
update ELEMENT set ENTITY_TYPE='AIM.DOC.ENG.STD' where AIMKEY in (
select AIMKEY from DOCUMENT where upper(FILE_LINKNAME) like '\\DATENCAD-SRV\COMPASS\DATA\INVENTOR_NORMTEILE%')
update DOCUMENT set FILE_LINKNAME = replace(upper(FILE_LINKNAME),'\\DATENCAD-SRV\COMPASS\DATA\INVENTOR_NORMTEILE','#(INI:Inventor:StdPartPath_1)') where upper(FILE_LINKNAME) like '\\DATENCAD-SRV\COMPASS\DATA\INVENTOR_NORMTEILE%'
CheckCompass¶
Check aller Tabellen gegen die ELEMENT
Für alle Tabellen ( DOCUMENT / PART /.... ) muss es einen Eintrag auf in der ELEMENT geben
oder
Für alle Einträge in ELEMENT mit AIM.XXX.* muß es einen Eintrag in der entsprechenden Tabelle geben
Die gelistet Einträge müssen aus der ELEMENT, XREF_ELEMENT, DOCUMENT, HISTORY_DOCUMENT raus ( AIM_SAVE Error )
Wenn Replikator auch REPL prüfen !!
-- -- (c) CAD Team Handzik -- -- COMPASS Integritäs Check -- -- V 0.9 Stand 13.02.2008 Hz - Start Version -- V 0.91 Stand 22.02.2008 Hz - Prüfen, was in der DOCUEMNT und nicht in der ELELEMT -- -- Name der Kundeumgebung -- USE compass_pro_cth -- -- Check aller Tabellen gegen die ELEMENT -- -- Für alle Tabellen ( DOCUMENT / PART /.... ) muss es einen Eintrag auf in der ELEMENT geben -- oder -- Für alle Einträge in ELEMENT mit AIM.XXX.* muß es einen Eintrag in der entsprechenden Tabelle geben -- -- Die gelistet Einträge müssen aus der ELEMENT -- XREF_ELEMENT -- DOCUMENT -- HISTORY_DOCUMENT raus ( AIM_SAVE Error ) -- Wenn Replikator auch REPL prüfen !! -- -- DECLARE @DEL AS INTEGER DECLARE @REPL AS INTEGER SET @REPL = 0 -------------------ACHTUNG SET @DEL = 0 --- ACHTUNG Bei 1 wird gelöscht -------------------ACHTUNG PRINT 'DOCUMENTE nicht ELEMENT >> Was ist in der DOCUMENT und nicht in der ELEMENT' SELECT E.AIMKEY, T.AIMKEY FROM ELEMENT AS E RIGHT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.AIMKEY IS NULL PRINT '';PRINT ''; PRINT 'DOCUMENTE gegen ELEMENT >> Was ist in der ELEMENT und nicht in der DOCUMENT' SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL PRINT '';PRINT ''; PRINT 'DOCUMENTE gegen ELEMENT dann in die XREF_ELEMENT >> PARENT_AIMKEY abgeleichen' SELECT PARENT_AIMKEY FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT 'DOCUMENTE gegen ELEMENT dann in die XREF_ELEMENT >> CHILD_AIMKEY abgeleichen' SELECT CHILD_AIMKEY FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT 'DOCUMENTE gegen ELEMENT dann in die HISTORY_DOCUMENT AIMKEY abgleichen' SELECT PARENT_AIMKEY FROM HISTORY_DOCUMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM HISTORY_DOCUMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; IF @REPL = 1 BEGIN PRINT 'DOCUMENTE gegen ELEMENT dann in die REPL_DOCUMENT AIMKEY abgleichen' SELECT AIMKEY FROM REPL_DOCUMENT WHERE AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) PRINT '';PRINT '' PRINT 'DOCUMENTE gegen ELEMENT dann in die REPLICATORQ abgleichen' SELECT AIMKEY FROM REPLICATORQ WHERE AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) PRINT '' END -- Zuletzt alles aus der ELEMENT raus IF @DEL = 1 BEGIN PRINT 'DOCUMENT gegen ELEMENT löschen ...' DELETE FROM ELEMENT WHERE AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.AIMKEY IS NULL ) PRINT 'ELEMENT gegen DOCUMENT löschen ...' DELETE FROM DOCUMENT WHERE AIMKEY IN ( SELECT T.AIMKEY FROM ELEMENT AS E RIGHT OUTER JOIN DOCUMENT AS T ON E.AIMKEY = T.AIMKEY WHERE E.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT '#######################################################################################################################################################################################' PRINT 'ADDRESS gegen ELEMENT' SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN ADDRESS AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.ADR%' AND T.AIMKEY IS NULL PRINT '';PRINT ''; PRINT 'ADDRESS gegen ELEMENT in die XREF_ELEMENT >> PARENT' SELECT PARENT_AIMKEY FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN ADDRESS AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.ADR%' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN ADDRESS AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.ADR%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT 'ADDRESS gegen ELEMENT in die XREF_ELEMENT >> CHILD' SELECT CHILD_AIMKEY FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN ADDRESS AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.ADR%' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN ADDRESS AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.ADR%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; -- Zuletzt alles aus der ELEMENT raus IF @DEL = 1 BEGIN PRINT 'ADDRESS gegen ELEMENT löschen ...' DELETE FROM ELEMENT WHERE AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN ADDRESS AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.ADR%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT '#######################################################################################################################################################################################' PRINT 'CONTACT gegen ELEMENT' SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN CONTACT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.CON%' AND T.AIMKEY IS NULL PRINT '';PRINT ''; PRINT 'CONTACT gegen ELEMENT in die XREF_ELEMENT >> PARENT' SELECT PARENT_AIMKEY FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN CONTACT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.CON%' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN CONTACT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.CON%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT 'CONTACT gegen ELEMENT in die XREF_ELEMENT >> CHILD' SELECT CHILD_AIMKEY FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN CONTACT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.CON%' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN CONTACT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.CON%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; -- Zuletzt alles aus der ELEMENT raus IF @DEL = 1 BEGIN PRINT 'CONTACT gegen ELEMENT löschen ...' DELETE FROM ELEMENT WHERE AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN CONTACT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.CON%' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT '#######################################################################################################################################################################################' PRINT 'PART gegen ELEMENT' SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PART AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PART' AND T.AIMKEY IS NULL PRINT '';PRINT''; PRINT 'PART gegen ELEMENT dann in die XREF_ELEMENT >> PARENT' SELECT PARENT_AIMKEY FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PART AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PART' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PART AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PART' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT 'PART gegen ELEMENT dann in die XREF_ELEMENT >> CHILD' SELECT CHILD_AIMKEY FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PART AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PART' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PART AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PART' AND T.AIMKEY IS NULL ) END PRINT '';PRINT''; PRINT 'PART gegen ELEMENT dann in die HISTORY_PART AIMKEY abgleichen' SELECT PARENT_AIMKEY FROM HISTORY_PART WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PART AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PART' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM HISTORY_PART WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PART AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PART' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; -- Zuletzt alles aus der ELEMENT raus IF @DEL = 1 BEGIN PRINT 'PART gegen ELEMENT löschen ...' DELETE FROM ELEMENT WHERE AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PART AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PART' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT '#######################################################################################################################################################################################' PRINT 'PROJECT gegen ELEMENT' SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PROJECT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PRO' AND T.AIMKEY IS NULL PRINT '';PRINT''; PRINT 'PROJECT gegen ELEMENT dann in die XREF_ELEMENT >> PARENT' SELECT PARENT_AIMKEY FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PROJECT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PRO' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE PARENT_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PROJECT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PRO' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT 'PROJECT gegen ELEMENT dann in die XREF_ELEMENT >> CHILD' SELECT CHILD_AIMKEY FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PROJECT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PRO' AND T.AIMKEY IS NULL ) IF @DEL = 1 BEGIN DELETE FROM XREF_ELEMENT WHERE CHILD_AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PROJECT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PRO' AND T.AIMKEY IS NULL ) END PRINT '';PRINT''; -- Zuletzt alles aus der ELEMENT raus IF @DEL = 1 BEGIN PRINT 'PROJECT gegen ELEMENT löschen ...' DELETE FROM ELEMENT WHERE AIMKEY IN ( SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN PROJECT AS T ON E.AIMKEY = T.AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.PRO' AND T.AIMKEY IS NULL ) END PRINT '';PRINT ''; PRINT '#######################################################################################################################################################################################' -- -- --############################################################################################# --############################################################################################# -- -- Hier ist der Ausgangswert REVISION wichtig -- Im Standard ist der Wert leer -- PRINT 'HISTORY_DOCUMENT gegen ELEMENT' SELECT E.AIMKEY FROM ELEMENT AS E LEFT OUTER JOIN HISTORY_DOCUMENT AS T ON E.AIMKEY = T.PARENT_AIMKEY WHERE E.ENTITY_TYPE LIKE 'AIM.DOC%' AND T.REVISION IS NOT NULL AND T.PARENT_AIMKEY IS NULL PRINT '';PRINT''; PRINT '#######################################################################################################################################################################################'
Tabelle erweitern¶
-- Tabelle DOCUMENT BEGIN TRANSACTION ALTER TABLE dbo.DOCUMENT ADD TEMPKOMNR varchar(30) NULL, TEMPGETRTYP varchar(30) NULL GO COMMIT GO -- Erweiterung der Sichten IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE id=OBJECT_ID('tempdb..#tmpErrors')) DROP TABLE #tmpErrors CREATE TABLE #tmpErrors (ERROR INT, MODULE VARCHAR(30), OBJECT VARCHAR(128), POSITION INT, DESCRIPTION VARCHAR(256)) SET XACT_ABORT ON IF EXISTS (SELECT * FROM sysobjects WHERE id=object_id('VIEW_DOCUMENT') AND OBJECTPROPERTY(id, 'IsView')=1) BEGIN IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE id=OBJECT_ID('tempdb..#AIM_UPD_VIEWS')) DELETE FROM #AIM_UPD_VIEWS ELSE CREATE TABLE #AIM_UPD_VIEWS (ALIAS sysname NULL, PCOLUMN sysname NULL, CHANGE_REQUEST VARCHAR(3)) INSERT INTO #AIM_UPD_VIEWS (ALIAS, PCOLUMN, CHANGE_REQUEST) VALUES ('TEMPKOMNR', 'D.TEMPKOMNR', 'ADD') INSERT INTO #AIM_UPD_VIEWS (ALIAS, PCOLUMN, CHANGE_REQUEST) VALUES ('TEMPGETRTYP', 'TEMPGETRTYP', 'ADD') EXECUTE aim_update_view 'VIEW_ALL_DOCUMENT' EXECUTE aim_update_view 'VIEW_DOCUMENT' EXECUTE aim_update_view 'VIEW_DOCUMENT_ENGINEERING' EXECUTE aim_update_view 'VIEW_XREF_DOCUMENT' EXECUTE aim_update_view 'VIEW_XREF_PARENT_DOCUMENT' EXECUTE aim_update_view 'VIEW_XREF_CHILD_DOCUMENT' END GO
Abgleich IDW in DOCUMENT¶
USE [compass_pro] GO /****** Objekt: Trigger [dbo].[CTH_UpdateDocumentIdw] Skriptdatum: 04/22/2009 10:45:40 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Uwe Handzik -- Create date: 14.08.2007 -- Description: Abgleichen der IDW -- ============================================= ALTER TRIGGER [dbo].[CTH_UpdateDocumentIdw] ON [dbo].[DOCUMENT] FOR UPDATE NOT FOR REPLICATION AS BEGIN SET NOCOUNT ON; BEGIN TRY -- Alles über den AIMKEY DECLARE @newAIMKEY numeric(17,5) -- Ist das Doument eine IDW DECLARE @newIDW nvarchar(10) -- Abzugleichenden WERTE Start DECLARE @newCPR_ZEICHNR nvarchar(255) DECLARE @newCPR_ARTIKEL nvarchar(255) DECLARE @newCPR_ANLAGE nvarchar(255) DECLARE @newCPR_AUFTRAG nvarchar(255) DECLARE @newCPR_VTEIL nvarchar(255) DECLARE @newCPR_ERS_DURCH nvarchar(255) DECLARE @newMATERIAL nvarchar(255) DECLARE @newCPR_CFELD_11 nvarchar(255) DECLARE @newCPR_LOGOCAD nvarchar(255) DECLARE @newCPR_FARBE nvarchar(255) DECLARE @newCPR_FTEIL nvarchar(255) DECLARE @newCPR_ERS_FUER nvarchar(255) DECLARE @newCPR_MSTAB nvarchar(255) DECLARE @newCPR_TOLERANZ nvarchar(255) -- Die Englische Einträge DECLARE @newCPR_SHORT_ENU nvarchar(255) DECLARE @newCPR_LONG_ENU nvarchar(255) DECLARE @newCPR_MAT_ENU nvarchar(255) DECLARE @newCPR_STICH_ENU nvarchar(255) DECLARE @newCPR_FARBE_ENU nvarchar(255) DECLARE @newCPR_CFELD_19 nvarchar(255) -- Abzugleichenden WERTE Start SELECT @newAIMKEY = AIMKEY FROM Inserted SELECT @newCPR_ZEICHNR = CPR_ZEICHNR FROM Inserted SELECT @newCPR_ARTIKEL = CPR_ARTIKEL FROM Inserted SELECT @newCPR_ANLAGE = CPR_ANLAGE FROM Inserted SELECT @newCPR_AUFTRAG = CPR_AUFTRAG FROM Inserted SELECT @newCPR_VTEIL = CPR_VTEIL FROM Inserted SELECT @newCPR_ERS_DURCH = CPR_ERS_DURCH FROM Inserted SELECT @newMATERIAL = MATERIAL FROM Inserted SELECT @newCPR_CFELD_11 = CPR_CFELD_11 FROM Inserted SELECT @newCPR_LOGOCAD = CPR_LOGOCAD FROM Inserted SELECT @newCPR_FARBE = CPR_FARBE FROM Inserted SELECT @newCPR_FTEIL = CPR_FTEIL FROM Inserted SELECT @newCPR_ERS_FUER = CPR_ERS_FUER FROM Inserted SELECT @newCPR_MSTAB = CPR_MSTAB FROM Inserted SELECT @newCPR_TOLERANZ = CPR_TOLERANZ FROM Inserted -- Die Englische Einträge SELECT @newCPR_SHORT_ENU = CPR_SHORT_ENU FROM Inserted SELECT @newCPR_LONG_ENU = CPR_LONG_ENU FROM Inserted SELECT @newCPR_MAT_ENU = CPR_MAT_ENU FROM Inserted SELECT @newCPR_STICH_ENU = CPR_STICH_ENU FROM Inserted SELECT @newCPR_FARBE_ENU = CPR_FARBE_ENU FROM Inserted SELECT @newCPR_CFELD_19 = CPR_CFELD_19 FROM Inserted IF @newAIMKEY IS NULL SELECT @newAIMKEY = 11.11 IF @newCPR_ZEICHNR IS NULL SELECT @newCPR_ZEICHNR = '' IF @newCPR_ARTIKEL IS NULL SELECT @newCPR_ARTIKEL = '' IF @newCPR_ANLAGE IS NULL SELECT @newCPR_ANLAGE = '' IF @newCPR_AUFTRAG IS NULL SELECT @newCPR_AUFTRAG = '' IF @newCPR_VTEIL IS NULL SELECT @newCPR_VTEIL = '' IF @newCPR_ERS_DURCH IS NULL SELECT @newCPR_ERS_DURCH = '' IF @newMATERIAL IS NULL SELECT @newMATERIAL = '' IF @newCPR_CFELD_11 IS NULL SELECT @newCPR_CFELD_11 = '' IF @newCPR_LOGOCAD IS NULL SELECT @newCPR_LOGOCAD = '' IF @newCPR_FARBE IS NULL SELECT @newCPR_FARBE = '' IF @newCPR_FTEIL IS NULL SELECT @newCPR_FTEIL = '' IF @newCPR_ERS_FUER IS NULL SELECT @newCPR_ERS_FUER = '' IF @newCPR_MSTAB IS NULL SELECT @newCPR_MSTAB = '' IF @newCPR_TOLERANZ IS NULL SELECT @newCPR_TOLERANZ = '' -- Die Englische Einträge IF @newCPR_SHORT_ENU IS NULL SELECT @newCPR_SHORT_ENU = '' IF @newCPR_LONG_ENU IS NULL SELECT @newCPR_LONG_ENU = '' IF @newCPR_MAT_ENU IS NULL SELECT @newCPR_MAT_ENU = '' IF @newCPR_STICH_ENU IS NULL SELECT @newCPR_STICH_ENU = '' IF @newCPR_FARBE_ENU IS NULL SELECT @newCPR_FARBE_ENU = '' IF @newCPR_CFELD_19 IS NULL SELECT @newCPR_CFELD_19 = '' --- --- AIMKEY ermittelt, - In XREF_ELEMENT Child(er) Suchen --- declare @ChildAimKey numeric(17,5) declare @ParentAimKey numeric(17,5) DECLARE Document_Cursor CURSOR FOR SELECT PARENT_AIMKEY, CHILD_AIMKEY FROM XREF_ELEMENT WHERE CHILD_AIMKEY = @newAIMKEY OPEN Document_Cursor FETCH NEXT FROM Document_Cursor INTO @ChildAimKey, @ParentAimKey WHILE @@FETCH_STATUS = 0 BEGIN -- Nachschauen ob IDW SELECT @newIDW = (SELECT FILE_EXT FROM DOCUMENT WHERE AIMKEY = @ChildAimKey ) IF upper(@newIDW) = 'IDW' UPDATE DOCUMENT SET CPR_ZEICHNR = @newCPR_ZEICHNR , CPR_ARTIKEL = @newCPR_ARTIKEL , CPR_ANLAGE = @newCPR_ANLAGE , CPR_AUFTRAG = @newCPR_AUFTRAG , CPR_VTEIL = @newCPR_VTEIL , CPR_ERS_DURCH = @newCPR_ERS_DURCH, MATERIAL = @newMATERIAL , CPR_CFELD_11 = @newCPR_CFELD_11 , CPR_LOGOCAD = @newCPR_LOGOCAD , CPR_FARBE = @newCPR_FARBE , CPR_FTEIL = @newCPR_FTEIL , CPR_ERS_FUER = @newCPR_ERS_FUER , CPR_MSTAB = @newCPR_MSTAB , CPR_TOLERANZ = @newCPR_TOLERANZ , CPR_SHORT_ENU = @newCPR_SHORT_ENU, CPR_LONG_ENU = @newCPR_LONG_ENU , CPR_MAT_ENU = @newCPR_MAT_ENU , CPR_STICH_ENU = @newCPR_STICH_ENU, CPR_FARBE_ENU = @newCPR_FARBE_ENU, CPR_CFELD_19 = @newCPR_CFELD_19 WHERE AIMKEY = @ChildAimKey FETCH NEXT FROM Document_Cursor INTO @ChildAimKey, @ParentAimKey END CLOSE Document_Cursor DEALLOCATE Document_Cursor END TRY BEGIN CATCH INSERT dbo.cth_errorlog ( ERRORNUMBER, ERRORSEVERITY, ERRORSTATE, ERRORPROCEDURE, ERRORLINE, ERRORMESSAGE ) VALUES ( CAST ( Error_NUMBER() AS VARCHAR(5)) , CAST ( Error_SEVERITY() as VARCHAR(2)) , CAST ( Error_STATE() AS VARCHAR(3)) , Error_PROCEDURE(), CAST ( Error_LINE() AS VARCHAR(3)), Error_MESSAGE() ); END CATCH END --USE [compass_pro] --GO --/****** Objekt: Table [dbo].[cth_errorlog] / --SET ANSI_NULLS ON --GO --SET QUOTED_IDENTIFIER ON --GO --CREATE TABLE [dbo].[cth_errorlog]( -- [ERRORNUMBER] [nvarchar](50) NULL, -- [ERRORSEVERITY] [nchar](10) NULL, -- [ERRORSTATE] [nchar](10) NULL, -- [ERRORPROCEDURE] [nchar](255) NULL, -- [ERRORLINE] [nchar](10) NULL, -- [ERRORMESSAGE] [nchar](255) NULL --) ON [PRIMARY]
Abgleich IDW in ELEMENT¶
USE [compass_pro] GO /****** Objekt: Trigger [dbo].[CTH_UpdateElementIdw] Skriptdatum: 04/22/2009 10:46:43 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Uwe Handzik -- Create date: 14.08.2007 -- Description: Abgleichen der IDW -- ============================================= ALTER TRIGGER [dbo].[CTH_UpdateElementIdw] ON [dbo].[ELEMENT] FOR UPDATE NOT FOR REPLICATION AS BEGIN SET NOCOUNT ON; BEGIN TRY -- Alles über den AIMKEY DECLARE @newAIMKEY numeric(17,5) -- Ist das Doument eine IDW DECLARE @newIDW nvarchar(10) -- Abzugleichenden WERTE Start DECLARE @newSHORT_DESC nvarchar(255) DECLARE @newLONG_DESC nvarchar(255) DECLARE @newCATEGORY nvarchar(255) DECLARE @newCUSTOM_1_SHORT nvarchar(255) -- Abzugleichenden WERTE Start SELECT @newAIMKEY = AIMKEY FROM Inserted SELECT @newSHORT_DESC = SHORT_DESC FROM Inserted SELECT @newLONG_DESC = LONG_DESC FROM Inserted SELECT @newCATEGORY = CATEGORY FROM Inserted SELECT @newCUSTOM_1_SHORT = CUSTOM_1_SHORT FROM Inserted IF @newAIMKEY IS NULL SELECT @newAIMKEY = 11.11 IF @newSHORT_DESC IS NULL SELECT @newSHORT_DESC = '' IF @newLONG_DESC IS NULL SELECT @newLONG_DESC = '' IF @newCATEGORY IS NULL SELECT @newCATEGORY = '' IF @newCUSTOM_1_SHORT IS NULL SELECT @newCUSTOM_1_SHORT = '' --- --- AIMKEY ermittelt, - In XREF_ELEMENT Child(er) Suchen --- declare @ChildAimKey numeric(17,5) declare @ParentAimKey numeric(17,5) DECLARE Document_Cursor CURSOR FOR SELECT PARENT_AIMKEY, CHILD_AIMKEY FROM XREF_ELEMENT WHERE CHILD_AIMKEY = @newAIMKEY OPEN Document_Cursor FETCH NEXT FROM Document_Cursor INTO @ChildAimKey, @ParentAimKey WHILE @@FETCH_STATUS = 0 BEGIN -- Nachschauen ob IDW SELECT @newIDW = (SELECT FILE_EXT FROM DOCUMENT WHERE AIMKEY = @ChildAimKey ) IF upper(@newIDW) = 'IDW' UPDATE ELEMENT SET SHORT_DESC = @newSHORT_DESC, LONG_DESC = @newLONG_DESC, CATEGORY = @newCATEGORY, CUSTOM_1_SHORT = @newCUSTOM_1_SHORT WHERE AIMKEY = @ChildAimKey FETCH NEXT FROM Document_Cursor INTO @ChildAimKey, @ParentAimKey END CLOSE Document_Cursor DEALLOCATE Document_Cursor END TRY BEGIN CATCH INSERT dbo.cth_errorlog ( ERRORNUMBER, ERRORSEVERITY, ERRORSTATE, ERRORPROCEDURE, ERRORLINE, ERRORMESSAGE ) VALUES ( CAST ( Error_NUMBER() AS VARCHAR(5)) , CAST ( Error_SEVERITY() as VARCHAR(2)) , CAST ( Error_STATE() AS VARCHAR(3)) , Error_PROCEDURE(), CAST ( Error_LINE() AS VARCHAR(3)), Error_MESSAGE() ); END CATCH END --USE [compass_pro] --GO --/****** Objekt: Table [dbo].[cth_errorlog] / --SET ANSI_NULLS ON --GO --SET QUOTED_IDENTIFIER ON --GO --CREATE TABLE [dbo].[cth_errorlog]( -- [ERRORNUMBER] [nvarchar](50) NULL, -- [ERRORSEVERITY] [nchar](10) NULL, -- [ERRORSTATE] [nchar](10) NULL, -- [ERRORPROCEDURE] [nchar](255) NULL, -- [ERRORLINE] [nchar](10) NULL, -- [ERRORMESSAGE] [nchar](255) NULL --) ON [PRIMARY]
Trigger Update Status¶
USE [professional_easy] GO /****** Objekt: Trigger [dbo].[CTH_UpdateStatus] Skriptdatum: 08/31/2009 07:51:47 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TRIGGER [dbo].[CTH_UpdateStatus] ON [dbo].[ELEMENT] FOR UPDATE NOT FOR REPLICATION AS DECLARE @oldStatus VARCHAR(5) DECLARE @newStatus VARCHAR(5) declare @keySec numeric (17,5) declare @keyDoc numeric (17,5) declare @IDENT Varchar(50) declare @FILE Varchar(50) declare @IDENT_SEC Varchar(50) declare @FILE_SEC Varchar(50) declare @CREATE_DATE datetime declare @CREATE_USER varchar(30) declare @CMP_ROOT varchar(255) declare @MONAT varchar(2) declare @JAHR varchar(4) declare @DOCNAME varchar(255) declare @DOCNAME_SEC varchar(255) declare @ANZ varchar(3) declare @OWNER varchar(255) declare @OWNER_GROUP varchar(255) declare @SHORT_DESC varchar(255) BEGIN -- Keinerlei Rückgabe von Resultsets SET NOCOUNT ON BEGIN TRY IF NOT UPDATE(STATUSKEY) BEGIN RETURN END ELSE BEGIN SELECT @oldStatus = (SELECT STATUSKEY FROM Deleted) SELECT @newStatus = (SELECT STATUSKEY FROM Inserted) SELECT @KeyDoc = (SELECT AIMKEY FROM Inserted) IF @oldStatus IS NULL SELECT @oldStatus = '-ERR-' IF @newStatus IS NULL SELECT @newStatus = '-ERR-' IF @KeyDoc IS NULL SELECT @KeyDoc = 50000.22222 -- -- Status auf zum Prüfen -- IF @newStatus = '00001' BEGIN UPDATE ELEMENT SET RIGHTS = 15375 WHERE AIMKEY = @KeyDoc END -- -- Status auf zum Prüfen -- IF @newStatus = '00002' BEGIN UPDATE ELEMENT SET RIGHTS = 1057801 WHERE AIMKEY = @KeyDoc END -- -- Status auf Freigegeben -- IF @newStatus = '00003' BEGIN UPDATE ELEMENT SET RIGHTS = 1057801 WHERE AIMKEY = @KeyDoc END -- -- Status auf -- IF @newStatus = '00005' BEGIN UPDATE ELEMENT SET RIGHTS = 9225 WHERE AIMKEY = @KeyDoc END -- -- Status auf -- IF @newStatus = '00006' BEGIN UPDATE ELEMENT SET RIGHTS = 15375 WHERE AIMKEY = @KeyDoc END -- -- -- IF @newStatus = '00004' BEGIN UPDATE ELEMENT SET RIGHTS = 15375 WHERE AIMKEY = @KeyDoc SELECT @CMP_ROOT = 'E:\DATEN\Compass\data\' -- -- -- SELECT @OWNER = (SELECT OWNER FROM ELEMENT WHERE AIMKEY = @KeyDoc) SELECT @OWNER_GROUP = (SELECT OWNER_GROUP FROM ELEMENT WHERE AIMKEY = @KeyDoc) SELECT @CREATE_DATE = (SELECT CREATE_DATE FROM ELEMENT WHERE AIMKEY = @KeyDoc) SELECT @CREATE_USER = (SELECT CREATE_USER FROM ELEMENT WHERE AIMKEY = @KeyDoc) SELECT @SHORT_DESC = (SELECT SHORT_DESC FROM ELEMENT WHERE AIMKEY = @KeyDoc) SELECT @JAHR = ( SUBSTRING (CONVERT(varchar(20), @CREATE_DATE,102),1,4)) SELECT @MONAT = ( SUBSTRING (CONVERT(varchar(20), @CREATE_DATE,102),6,2)) SELECT @FILE = (SELECT FILE_NAME FROM DOCUMENT WHERE AIMKEY = @KeyDoc) SELECT @IDENT = (SELECT IDENT FROM DOCUMENT WHERE AIMKEY = @KeyDoc) select @ANZ = (SELECT COUNT(*) FROM DOCUMENT WHERE FILE_NAME LIKE '%'+@FILE+'%' ) + 1 SELECT @FILE_SEC = 'X' + @FILE + '-' + @ANZ SELECT @IDENT_SEC = 'X' + @IDENT + '-' + @ANZ SELECT @DOCNAME = @CMP_ROOT + @JAHR + '\' + @MONAT + '\1\' + @FILE + '.PDF' SELECT @DOCNAME_SEC = @CMP_ROOT + @JAHR + '\' + @MONAT + '\0\' + @FILE_SEC + '.PDF' -- -- 00001 - in Arbeit -- 00002 - zum prüfen -- 00003 - freigegeben -- 00004 - in Änderung -- 00005 - Ungültig exec aim_generate_aimkey @keySec OUTPUT -- -- Einfügen in Tabelle ELEMENT -- INSERT into ELEMENT ( AIMKEY, -- 01 ENTITY_TYPE, -- 02 STATUSKEY, -- 03 CREATE_DATE, -- 04 CREATE_USER, -- 05 CHANGE_DATE, -- 06 CHANGE_USER, -- 07 OWNER, -- 08 OWNER_GROUP, -- 09 RIGHTS, -- 10 SHORT_DESC -- 11 ) VALUES ( @keySec, -- 01 'AIM.DOC.SECONDARY',-- 02 '00001', -- 03 @CREATE_DATE, -- 04 @CREATE_USER, -- 05 @CREATE_DATE, -- 06 @CREATE_USER, -- 07 @OWNER, -- 08 @OWNER_GROUP, -- 09 '1063951', -- 10 @SHORT_DESC -- 11 ) -- -- Einfügen in Tabelle DOCUMENT -- INSERT into DOCUMENT ( AIMKEY, -- 01 IDENT, -- 02 **** FILE_NAME, -- 03 **** FILE_EXT, -- 04 FILE_TYPE -- 05 ) VALUES ( @keySec, -- 01 @IDENT_SEC, -- 02 *** @FILE_SEC, -- 03 *** 'pdf', -- 04 'PDF' -- 05 ) -- -- Verknüpfung erstellen -- INSERT into XREF_ELEMENT ( PARENT_AIMKEY, -- 01 Key der IDW CHILD_AIMKEY, -- 02 Key des SEC DOc RELATIONSHIP_ID, -- 03 OWNER, -- 04 OWNER_GROUP -- 05 ) VALUES ( @keyDoc, -- 01 @keySec, -- 02 'AIM.XREF.DOC.SECONDARY', -- 03 @CREATE_USER, -- 04 'ENGINEERING_EMPLOYEES' -- 05 ) DECLARE @Mach VARCHAR(255) SELECT @MACH = 'copy ' + @DOCNAME + ' ' + @DOCNAME_SEC EXEC xp_cmdshell @MACH ; RETURN END END END TRY BEGIN CATCH ROLLBACK TRANSACTION INSERT dbo.cth_errorlog ( ERRORNUMBER, ERRORSEVERITY, ERRORSTATE, ERRORPROCEDURE, ERRORLINE, ERRORMESSAGE ) VALUES ( CAST ( Error_NUMBER() AS VARCHAR(5)) , CAST ( Error_SEVERITY() as VARCHAR(2)) , CAST ( Error_STATE() AS VARCHAR(3)) , Error_PROCEDURE(), CAST ( Error_LINE() AS VARCHAR(3)), Error_MESSAGE() ); END CATCH END -- --######################################################################## --
SET_FILE_SHARE_WITH¶
UPDATE DOCUMENT set FILE_SHARE_WITH=DATEDIFF(s, '19700101 00:00:00', '20070531')
InsertDocumentsIntoAllLocations¶
--
-- Number of documents with missing links
---
select count() from VIEW_ALL_DOCUMENT
where (select count() from XREF_ELEMENT
where RELATIONSHIP_ID='AIM.XREF.DOC.LOCATION')<2
--
--
-- Link all documents to all locations
--
--
DECLARE alldocs CURSOR LOCAL FORWARD_ONLY FOR SELECT AIMKEY FROM DOCUMENT
DECLARE @doc_aimkey NUMERIC
OPEN alldocs
FETCH NEXT FROM alldocs INTO @doc_aimkey
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE dest_loc CURSOR LOCAL FORWARD_ONLY FOR SELECT AIMKEY FROM LOCATION
DECLARE @loc_aimkey NUMERIC
OPEN dest_loc
FETCH NEXT FROM dest_loc INTO @loc_aimkey
WHILE @@FETCH_STATUS = 0
BEGIN
if ((select count(*) from XREF_ELEMENT
where PARENT_AIMKEY=@doc_aimkey and CHILD_AIMKEY=@loc_aimkey)=0)
begin
INSERT INTO XREF_ELEMENT (PARENT_AIMKEY, CHILD_AIMKEY, RELATIONSHIP_ID, OWNER, OWNER_GROUP)
VALUES(@doc_aimkey, @loc_aimkey, 'AIM.XREF.DOC.LOCATION', 'Administrator', 'ENGINEERING_EMPLOYEES')
end
FETCH NEXT FROM dest_loc INTO @loc_aimkey
END
CLOSE dest_loc
DEALLOCATE dest_loc
FETCH NEXT FROM alldocs INTO @doc_aimkey
END
CLOSE alldocs
DEALLOCATE alldocs
GO
Repl Status¶
PRINT 'Anzahl aktueller Pushaufträge pro Ziel-Standort' -- -- -- SELECT DESTLOCATION, COUNT(*) FROM REPLICATORQ WHERE (REPLICATION_TYPE LIKE '%4') GROUP BY DESTLOCATION -- -- -- PRINT '' Print 'Anzahl aktueller Pushaufträge pro Quell-Standort' -- SELECT SOURCELOCATION, COUNT(*) FROM REPLICATORQ WHERE (REPLICATION_TYPE LIKE '%4') GROUP BY SOURCELOCATION -- -- -- PRINT '' Print 'Anzahl aktueller Pushaufträge pro Quell-Standort' -- SELECT DESTLOCATION, COUNT(*) FROM REPLICATORQ WHERE (REPLICATION_TYPE LIKE '%8') AND (DESTLOCATION <> SOURCELOCATION) GROUP BY DESTLOCATION
Einsame IPTs¶
SELECT * FROM VIEW_DOCUMENT_ENGINEERING WHERE (AIMKEY not in (select PARENT_AIMKEY from XREF_ELEMENT where RELATIONSHIP_ID='AIM.XREF.DOC.ENG')) AND (AIMKEY not in (select CHILD_AIMKEY from XREF_ELEMENT where RELATIONSHIP_ID='AIM.XREF.DOC.ENG')) AND (FILE_TYPE like 'I%')
Aufheben der Replikation¶
-- aufheben der Replikation -- drop rowguid indexes select 'drop index ' + sysobjects.name + '.' + sysindexes.name from sysindexes inner join sysobjects on sysindexes.id = sysobjects.id where objectproperty(object_id(sysobjects.name),'IsMSShipped') = 0 and sysindexes.indid > 0 and sysindexes.indid < 255 and (sysindexes.status & 64)=0 and index_col(sysobjects.name, sysindexes.indid, 1) = 'rowguid' order by sysindexes.indid -- remove rowguid default constraints select 'alter table ' + b.name + ' drop constraint ' + a.name from sysobjects a inner join syscolumns on syscolumns.id = a.parent_obj inner join sysobjects b on syscolumns.id = b.id where syscolumns.name = 'rowguid' and objectproperty(object_id(b.name),'IsMSShipped') = 0 and a.xtype = 'D' -- remove rowguid columns select 'alter table ' + sysobjects.name + ' drop column ''rowguid'' ' from syscolumns inner join sysobjects on syscolumns.id = sysobjects.id where syscolumns.name = 'rowguid' and objectproperty(object_id(sysobjects.name),'IsMSShipped') = 0
Abgleich Karten 1.1¶
-- -- Installation für Kartenabgleich IPT / IAM /IPN mit IDW -- -- (C) by CAD Team Handzik - Dipl. Ing. Uwe Handzik -- -- Version 2.1 Stand 30.04.2011 -- USE compass_easy GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO --############################################################################################################################## -- -- Error Tabelle anlegen -- IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'cth_errorlog') DROP TABLE cth_errorlog; GO CREATE TABLE [dbo].cth_errorlog( [pkErrorHandlingID] [int] IDENTITY(1,1) NOT NULL, [Error_Number] [int] NOT NULL, [Error_Message] [varchar](4000) COLLATE Latin1_General_BIN NULL, [Error_Severity] [smallint] NOT NULL, [Error_State] [smallint] NOT NULL DEFAULT ((1)), [Error_Procedure] [varchar](200) COLLATE Latin1_General_BIN NOT NULL, [Error_Line] [int] NOT NULL DEFAULT ((0)), [UserName] [varchar](128) COLLATE Latin1_General_BIN NOT NULL DEFAULT (''), [HostName] [varchar](128) COLLATE Latin1_General_BIN NOT NULL DEFAULT (''), [Time_Stamp] datetime NOT NULL, PRIMARY KEY CLUSTERED ( [pkErrorHandlingID] ASC )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO Print 'CREATE TABLE cth_errorlog' GO --############################################################################################################################## -- Store Procedure für CthErrorHandling löschen IF OBJECT_ID ('CthErrorHandling', 'P') IS NOT NULL DROP PROCEDURE CthErrorHandling GO Print 'DROP PROCEDURE CthErrorHandling' GO --############################################################################################################################## -- ============================================= -- Author : Uwe Handzik -- Ersellt am : 24.09.2009 -- Version : 1.0 -- Description : Error Handling für den Rest -- Aufruf mit EXEC dbo.CthErrorHandling -- ============================================= CREATE procedure dbo.CthErrorHandling AS BEGIN -- Declaration statements DECLARE @Error_Number int DECLARE @Error_Message varchar(4000) DECLARE @Error_Severity int DECLARE @Error_State int DECLARE @Error_Procedure varchar(200) DECLARE @Error_Line int DECLARE @UserName varchar(200) DECLARE @HostName varchar(200) DECLARE @Time_Stamp datetime -- Initialize variables SELECT @Error_Number = isnull(error_number(),0), @Error_Message = isnull(error_message(),'NULL Message'), @Error_Severity = isnull(error_severity(),0), @Error_State = isnull(error_state(),1), @Error_Line = isnull(error_line(), 0), @Error_Procedure = isnull(error_procedure(),''), @UserName = SUSER_SNAME(), @HostName = HOST_NAME(), @Time_Stamp = GETDATE(); -- Insert into the dbo.ErrorHandling table INSERT INTO dbo.cth_errorlog (Error_Number, Error_Message, Error_Severity, Error_State, Error_Line, Error_Procedure, UserName, HostName, Time_Stamp) SELECT @Error_Number, @Error_Message, @Error_Severity, @Error_State, @Error_Line, @Error_Procedure, @UserName, @HostName, @Time_Stamp END GO Print 'CREATE PROCEDURE CthErrorHandling' GO --############################################################################################################################## -- -- LOG Tabelle anlegen -- -- Handhabung : INSERT dbo.cth_log ( POS, MESSAGE ) VALUES 'Pos der MSG', 'Wert' -- IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'cth_log') DROP TABLE cth_log; GO Print 'DROP TABLE cth_log' GO CREATE TABLE [dbo].[cth_log]( [POS] [nVARCHAR] (50) NULL, [MESSAGE] [nchar] (255) NULL ) ON [PRIMARY] GO Print 'CREATE TABLE cth_log' GO --############################################################################################################################## -- -- Sync Felder in der DOCUMENT anlegen if not exists (select * from syscolumns where id=object_id('DOCUMENT') and name='CTH_SYNC') alter table DOCUMENT add CTH_SYNC varchar(4) NULL if not exists (select * from syscolumns where id=object_id('DOCUMENT') and name='CTH_SYNC_AT') alter table DOCUMENT add CTH_SYNC_AT varchar(30) NULL if not exists (select * from syscolumns where id=object_id('DOCUMENT') and name='CTH_SYNC_JN') alter table DOCUMENT add CTH_SYNC_JN varchar(4) NULL GO Print 'Sync Felder in der DOCUMENT anlegen' GO -- Erweiterung der Sichten IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE id=OBJECT_ID('tempdb..#tmpErrors')) DROP TABLE #tmpErrors CREATE TABLE #tmpErrors (ERROR INT, MODULE VARCHAR(30), OBJECT VARCHAR(128), POSITION INT, DESCRIPTION VARCHAR(256)) SET XACT_ABORT ON IF EXISTS (SELECT * FROM sysobjects WHERE id=object_id('VIEW_DOCUMENT') AND OBJECTPROPERTY(id, 'IsView')=1) BEGIN IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE id=OBJECT_ID('tempdb..#AIM_UPD_VIEWS')) DELETE FROM #AIM_UPD_VIEWS ELSE CREATE TABLE #AIM_UPD_VIEWS (ALIAS sysname NULL, PCOLUMN sysname NULL, CHANGE_REQUEST VARCHAR(3)) INSERT INTO #AIM_UPD_VIEWS (ALIAS, PCOLUMN, CHANGE_REQUEST) VALUES ('CTH_SYNC', 'D.CTH_SYNC', 'ADD') INSERT INTO #AIM_UPD_VIEWS (ALIAS, PCOLUMN, CHANGE_REQUEST) VALUES ('CTH_SYNC_AT', 'D.CTH_SYNC_AT', 'ADD') INSERT INTO #AIM_UPD_VIEWS (ALIAS, PCOLUMN, CHANGE_REQUEST) VALUES ('CTH_SYNC_JN', 'D.CTH_SYNC_JN', 'ADD') EXECUTE aim_update_view 'VIEW_ALL_DOCUMENT' EXECUTE aim_update_view 'VIEW_DOCUMENT' EXECUTE aim_update_view 'VIEW_DOCUMENT_ENGINEERING' EXECUTE aim_update_view 'VIEW_DOCUMENT_OFFICE' EXECUTE aim_update_view 'VIEW_XREF_DOCUMENT' EXECUTE aim_update_view 'VIEW_XREF_PARENT_DOCUMENT' EXECUTE aim_update_view 'VIEW_XREF_CHILD_DOCUMENT' END GO Print 'Erweiterung der Sichten' GO --############################################################################################################################## -- Store Procedure für DOCUMENT löschen IF OBJECT_ID ('CTH_Sync_IDW', 'P') IS NOT NULL DROP PROCEDURE CTH_Sync_IDW GO Print 'DROP PROCEDURE CTH_Sync_IDW' GO --############################################################################################################################## -- ============================================= -- Author : Uwe Handzik -- Ersellt am : 24.09.2009 -- Version : 1.1 -- Description : Abgleichen der IDW -- Trigger für die DOCUMENT -- Gleicht IDW ab wenn änderung in DOCUMENT -- -- 1.1 Alter Tabel raus -- ============================================= CREATE PROCEDURE [dbo].[CTH_Sync_IDW] @argAIMKEY NUMERIC(17,5) AS DECLARE @newAIMKEY NUMERIC(17,5) DECLARE @ChildAimKey NUMERIC(17,5) DECLARE @ParentAimKey NUMERIC(17,5) DECLARE @newIDW nVARCHAR(255) BEGIN SET @newAIMKEY = @argAIMKEY SET NOCOUNT ON; BEGIN TRY --- AIMKEY ermittelt, - In XREF_ELEMENT Child(er) Suchen DECLARE Document_Cursor CURSOR FOR SELECT PARENT_AIMKEY, CHILD_AIMKEY FROM XREF_ELEMENT WHERE CHILD_AIMKEY = @newAIMKEY AND RELATIONSHIP_ID = 'AIM.XREF.DOC.ENG' OPEN Document_Cursor FETCH NEXT FROM Document_Cursor INTO @ChildAimKey, @ParentAimKey WHILE @@FETCH_STATUS = 0 BEGIN -- Nachschauen ob IDW SELECT @newIDW = (SELECT FILE_TYPE FROM DOCUMENT WHERE AIMKEY = @ChildAimKey ) IF upper(@newIDW) = 'IDW' BEGIN -- -- Debug Info -- --INSERT dbo.cth_log ( POS, MESSAGE ) VALUES ( 'CTH_Sync_IDW UPDATE', CAST ( @ChildAimKey AS VARCHAR(30))) -- Sync Flag setzen UPDATE DOCUMENT SET CTH_SYNC = 'SYNC', CTH_SYNC_AT = CONVERT(varchar(20), GetDate()) WHERE AIMKEY = @ChildAimKey -- Stored Proc ist Kundenabhängig EXECUTE CTH_SYNC_KUNDEN_FELDER @ParentAimKey, @ChildAimKey END -- IS IDW FETCH NEXT FROM Document_Cursor INTO @ChildAimKey, @ParentAimKey END -- WHILE CLOSE Document_Cursor DEALLOCATE Document_Cursor END TRY BEGIN CATCH ROLLBACK TRANSACTION EXEC dbo.CthErrorHandling END CATCH RETURN END GO Print 'CREATE PROCEDURE CTH_Sync_IDW' GO --############################################################################################################################## -- -- Trigger für XREF löschen IF OBJECT_ID ('CTH_InsertDocIdw', 'TR') IS NOT NULL DROP TRIGGER CTH_InsertDocIdw GO Print 'DROP TRIGGER CTH_InsertDocIdw' GO --############################################################################################################################## -- ============================================= -- Author : Uwe Handzik -- Ersellt am : 24.09.2009 -- Version : 1.0 -- Description : Abgleichen der IDW -- Trigger für die XREF_ELEMENT -- Gleicht IDW ab, die mit kopiert wird -- ============================================= CREATE TRIGGER [dbo].[CTH_InsertDocIdw] ON [dbo].[XREF_ELEMENT] FOR INSERT NOT FOR REPLICATION AS BEGIN SET NOCOUNT ON; BEGIN TRY DECLARE @PARENT_AIMKEY NUMERIC(17,5) DECLARE @CHILD_AIMKEY NUMERIC(17,5) DECLARE @FILE_TYPE VARCHAR(10) SELECT @PARENT_AIMKEY = ( SELECT PARENT_AIMKEY FROM Inserted ) SELECT @CHILD_AIMKEY = ( SELECT CHILD_AIMKEY FROM Inserted ) SELECT @FILE_TYPE = ( SELECT FILE_TYPE FROM DOCUMENT WHERE AIMKEY = @PARENT_AIMKEY ) IF UPPER( @FILE_TYPE ) = 'IDW' BEGIN -- -- Debug Info -- --INSERT dbo.cth_log ( POS, MESSAGE ) VALUES ('CTH_InsertDocIdw', 'TRIGGER IDW' ) EXECUTE CTH_Sync_IDW @CHILD_AIMKEY END END TRY BEGIN CATCH ROLLBACK TRANSACTION EXEC dbo.CthErrorHandling END CATCH END GO Print 'CREATE TRIGGER CTH_InsertDocIdw' GO --############################################################################################################################## -- Trigger für ELEMENT löschen IF OBJECT_ID ('CTH_UpdateEleIdw', 'TR') IS NOT NULL DROP TRIGGER CTH_UpdateEleIdw GO Print 'DROP TRIGGER CTH_UpdateEleIdw' GO --############################################################################################################################## -- ============================================= -- Author : Uwe Handzik -- Ersellt am : 24.09.2009 -- Version : 1.0 -- Description : Abgleichen der IDW -- Trigger für die ELEMENT -- Gleicht IDW ab wenn änderung in ELEMENT -- ============================================= CREATE TRIGGER [dbo].[CTH_UpdateEleIdw] ON [dbo].[ELEMENT] FOR UPDATE NOT FOR REPLICATION AS BEGIN SET NOCOUNT ON; BEGIN TRY DECLARE @AIMKEY NUMERIC(17,5) DECLARE @FILE_TYPE VARCHAR(10) SELECT @AIMKEY = (SELECT AIMKEY FROM Inserted) SELECT @FILE_TYPE = (SELECT FILE_TYPE FROM DOCUMENT WHERE AIMKEY = @AIMKEY) IF @FILE_TYPE IS NOT NULL BEGIN IF UPPER(@FILE_TYPE) = 'IPT' OR UPPER(@FILE_TYPE) = 'IAM' OR UPPER(@FILE_TYPE) = 'IPN' BEGIN -- -- Debug Info -- --INSERT dbo.cth_log ( POS, MESSAGE ) VALUES ('CTH_UpdateEleIdw', 'TRIGGER' ) EXECUTE CTH_Sync_IDW @AIMKEY END END END TRY BEGIN CATCH ROLLBACK TRANSACTION EXEC dbo.CthErrorHandling END CATCH END GO Print 'CREATE TRIGGER CTH_UpdateEleIdw' GO --############################################################################################################################## -- Trigger für DOCUMENT löschen IF OBJECT_ID ('CTH_UpdateDocIdw', 'TR') IS NOT NULL DROP TRIGGER CTH_UpdateDocIdw GO Print 'DROP TRIGGER CTH_UpdateDocIdw' GO --############################################################################################################################## -- ============================================= -- Author : Uwe Handzik -- Ersellt am : 24.09.2009 -- Version : 1.0 -- Description : Abgleichen der IDW -- Trigger für die DOCUMENT -- Gleicht IDW ab wenn änderung in DOCUMENT -- ============================================= CREATE TRIGGER [dbo].[CTH_UpdateDocIdw] ON [dbo].[DOCUMENT] FOR UPDATE NOT FOR REPLICATION AS BEGIN SET NOCOUNT ON; BEGIN TRY DECLARE @AIMKEY NUMERIC(17,5) DECLARE @FILE_TYPE VARCHAR(10) SELECT @AIMKEY = (SELECT AIMKEY FROM Inserted ) SELECT @FILE_TYPE = (SELECT FILE_EXT FROM Inserted ) IF UPPER(@FILE_TYPE) = 'IPT' OR UPPER(@FILE_TYPE) = 'IAM' OR UPPER(@FILE_TYPE) = 'IPN' BEGIN -- -- Debug Info -- --INSERT dbo.cth_log ( POS, MESSAGE ) VALUES ('CTH_UpdateDocIdw', 'TRIGGER IPT/IAM/IPN' ) EXECUTE CTH_Sync_IDW @AIMKEY END END TRY BEGIN CATCH ROLLBACK TRANSACTION EXEC dbo.CthErrorHandling END CATCH END GO Print 'CREATE TRIGGER CTH_UpdateDocIdw' GO --##############################################################################################################################
Frei¶
Frei¶