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 :
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
Mes questions sont :

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 ?