Bonjour,
je souhaite supprimer des données dans une table de 40Go.
Sans me douter que l'instruction "delete" inscrivait des choses dans tempdb, j'ai d'abord fait un "delete" (en ayant suffisamment de place sur mon disque de log).
çà n'a pas marcher (saleté de tempdb, j'avais prévu pour les logs mais pas pour mes bases système).
Bref je veux donc selectionner mes tuples dans une table temporaire, tronquer la table et remettre les tuples dans ma table, avec le script suivant :
Mes questions sont :
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 --select into #tempSL SELECT * INTO #tempSL FROM [NAV403REST_DEV].[dbo].[$Sales Line Archive] WHERE [Document No_] in (SELECT [No_] FROM [NAV403REST_DEV].[dbo].[$Sales Header Archive] WHERE [Shipment Date] > '01/05/2011') GO --select into #tempSH SELECT * INTO #tempSH FROM [NAV403REST_DEV].[dbo].[$Sales Header Archive] WHERE [Shipment Date] > '01/05/2011' GO -- truncate des tables TRUNCATE TABLE [NAV403REST_DEV].[dbo].[$Sales Header Archive] GO TRUNCATE * INTO [NAV403REST_DEV].[dbo].[$Sales Header Archive] FROM #temp GO -- select into tables d'origine SELECT * INTO [NAV403REST_DEV].[dbo].[$Sales Header Archive] FROM #tempSH GO SELECT * INTO [NAV403REST_DEV].[dbo].[$Sales Line Archive] FROM #tempSL GO DROP TABLE #tempSH GO DROP TABLE #tempSL GO
Combien de temps prend un truncate sur une table de 40Go (à la louche) ?
Quel est l'impact sur la table pour les autres utilisateurs ?
Quel est l'impact sur la base de donnée pour les autres utilisateurs ?
Quel l'impacte sur l'instance pour les autres utilisateurs ?
Suis-je certain que le script ci dessus ne va rien écrire (hormis mes tables #temp qui ne feront pas plus d'une centaine de Mo) sur le disque qui héberge mes bases de données système (seulement 25Go de libre sur ce disque) ?
Pensez-vous que le script est viable ? sinon, comment puis-je l'optimiser ?
Partager