Bonjour,
Afin de réaliser un package de base je cherche à obtenir les nom des fichiers log de mes instances.
Le script ressemble pour le moment à ça :
Mais évidement le SHRINKFILE ne fonctionne pas.
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 DECLARE @name sysname DECLARE @status INT DECLARE DBCurseur CURSOR FOR SELECT master.dbo.sysdatabases.name, master.dbo.sysdatabases.status FROM master.dbo.sysdatabases WHERE name LIKE 'Prn_Dwh_%' AND NAME NOT LIKE '%snapshot%' -- Ouverture du Curseur OPEN DBCurseur FETCH NEXT FROM DBCurseur INTO @name, @status -- Bouclage sur le curseur défini WHILE @@FETCH_STATUS = 0 BEGIN BACKUP LOG @name WITH TRUNCATE_ONLY DBCC SHRINKFILE(Prn_Dwh_Acc_log, 100) SELECT @name FETCH NEXT FROM DBCurseur INTO @name, @status END ----------------------------------------------------------------- -- Fermeture du Curseur CLOSE DBCurseur -- Libération de la mémoire prise par le Curseur DEALLOCATE DBCurseur
L'idéal serait d'alimenter mon curseur directement avec le nom du fichier log de chaque instance, mais je ne trouve pas comment faire.
La suite de mon package IS contient alors le backup, transfert le restore sur mes serveurs de dev.
Partager