Bonjour ,
J'ai une question bête :
J'ai désactivé les contraintes sur une BDD afin de pouvoir temporairement insérer des données en masse.
Je n'arrive plus à réactiver ces contraintes.
Voilà la question bête, est ce qu' en restaurant cette BDD à une date antérieure , je peux retrouver mes contraintes activées?
Voici le script que j'ai utilisé pour désactiver et réactiver les contraintes de ma BDD .
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 -- Script de désactivation des contraintes FK d'une base de données -- Déclaration de la variable qui va contenir les requetes à exécuter Declare @Requete VarChar(1000) -- Déclaration du curseur qui va contenir pour chaque FK, une requete de désactivation Declare Cur_Contrainte Cursor For select 'ALTER TABLE ' + t.name + ' NOCHECK CONSTRAINT ' + fk.name from sysobjects fk, sysobjects t where fk.type='F' and fk.parent_obj=t.id order by t.name Open Cur_Contrainte -- Boucle sur le curseur et exécution des requetes Print 'Désactivation des contraintes en cours, Patience ....' Fetch Next From Cur_Contrainte Into @Requete While @@Fetch_Status = 0 Begin -- Possibiliter d'afficher les requetes exécutées en supprimant le commentaire ci dessous -- Print @Requete Execute (@Requete) Fetch Next From Cur_Contrainte Into @Requete End -- Fermeture du curseur et libération des ressources Close Cur_Contrainte Deallocate Cur_Contrainte Print 'Désactivation des contraintes terminée !' -- Script de réactivation des contraintes FK d'une base de données -- Déclaration de la variable qui va contenir les requetes à exécuter Declare @Requete VarChar(1000) -- Déclaration du curseur qui va contenir pour chaque FK, une requete de réactivation -- Précision : l'option WITH CHECK CHECK permet de forcer le moteur à activer la contrainte -- mais aussi à vérifier que le contenu des tables est conforme aux contraintes -- sinon il est possible de ne mettre que l'option "CHECK" mais dans ce cas, la contrainte -- est activée sans controle de l'existant Declare Cur_Contrainte Cursor For select 'ALTER TABLE ' + t.name + ' WITH CHECK CHECK CONSTRAINT ' + fk.name from sysobjects fk, sysobjects t where fk.type='F' and fk.parent_obj=t.id order by t.name Open Cur_Contrainte -- Boucle sur le curseur et exécution des requetes Print 'Réactivation des contraintes en cours, Patience ....' Fetch Next From Cur_Contrainte Into @Requete While @@Fetch_Status = 0 Begin -- Possibiliter d'afficher les requetes exécutées en supprimant le commentaire ci dessous -- Print @Requete Execute (@Requete) Fetch Next From Cur_Contrainte Into @Requete End -- Fermeture du curseur et libération des ressources Close Cur_Contrainte Deallocate Cur_Contrainte Print 'Réactivation des contraintes terminée !'![]()
Partager