web-dev-qa-db-fra.com

SQL Server 2000: liste et désactiver tous les déclencheurs

Je dois faire un nettoyage de base de données pour l'une de nos bases de données sur un environnement SQL Server 2000. Le nettoyage inclut fondamentalement la désactivation de tous les déclencheurs, la suppression de toutes les données anciennes, l'activation des déclencheurs et la rétrécissement du journal de transaction.

Actuellement, le plus gros problème que j'ai est la désactivation des déclencheurs. Cela aurait été super facile dans le SQL 2005/2008, car ils incluaient une commande "Désactiver Triggers TOUT". J'ai une requête pour répertorier tous les déclencheurs bien que cela ne répertorie pas l'état de la gâchette (ce serait un bonus)

SELECT S2.[name] TableName, S1.[name] TriggerName, CASE WHEN S2.deltrig = s1.id THEN 'Delete' WHEN S2.instrig = s1.id THEN 'Insert' WHEN S2.updtrig = s1.id THEN 'Update' END 'TriggerType' , 'S1',s1.*,'S2',s2.* FROM sysobjects S1 JOIN sysobjects S2 ON S1.parent_obj = S2.[id] WHERE S1.xtype='TR'

source

La suppression des enregistrements sera un simple Supprimer pour chaque table, ce n'est probablement pas le moyen le plus efficace de le faire, mais sa façon qui a été prescrite.

La rétrécissement du journal des transactions est également triée, j'ai trouvé un article sur l'utilisation de la DBCC sur le site de support Microsoft

Tout avantage serait vraiment apprécié

6
fluf

SQL Server 2000 a Alter Table FOO Activer la gâchette Tout aussi

Et pour générer le script de table d'alter requis, utilisez cette

SELECT
    DISTINCT 'ALTER TABLE ' + OBJECT_NAME(parent_obj) + ' /*DISABLE*/ ENABLE TRIGGER ALL'
FROM
    sysobjects
WHERE
    xtype = 'TR'

Je ne prendrais pas la peine de tester le statut des déclencheurs, personnellement. Un déclencheur désactivé ne doit pas exister IMHO. Non le moins parce OBJECTPROPERTY ne le supporte pas dans SQL Server 2000

Éditer:

Mon erreur, ObjectProperty dans SQL Server 2000 est exécutive conformément au commentaire. Afin que vous puissiez suivre le statut avant et après

6
gbn