Bonjour à tous,

Je suis sous SQL Server 2005

Je dois supprimer une centaine de DB suite à une migration d'SQL2005 vers SQL2008.

Mes DB commencent par un code applicatif, genre PPPA et se termine par _MIG2008. Et pour chaque DB, il y a 2 jobs qui eux sont désactivé mais pas renommé (malheureusement, sinon j'aurais facile).
Les 2 jobs sont nommés comme ceci : PPPA:Backup 30 minutes et PPPA:backup full
Via ma variable @DBname, comment puis-je laisser le _MIG2008 mais qu'il prenne les caractères avant le _MIG2008 et supprimer tous les jobs en prenant le nom de la db sans prendre en compte le _MIG2008 ?

ATTENTION, malheureusement, parfois la DB s'appelle aussi PPPAblablabla

Je ne sais pas comment adapté la ligne "WHERE name LIKE @DBname ':%'" ? Cette ligne là était utilisée à l'époque pour désactiver les jobs. Enfin si c'est celle-là que je dois adapter.

Merci

Voici ma query :

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
 
DECLARE @DBName VARCHAR(255)
DECLARE @JobName VARCHAR(255)
 
SET		@DBName = 'MYDB_MIG2008'
 
DECLARE DeleteJobs CURSOR FOR
SELECT name
FROM msdb..sysjobs
WHERE name LIKE @DBname  ':%'
OPEN DeleteJobs
FETCH DeleteJobs INTO @JobName
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Deleting: ' + @JobName
EXEC msdb.dbo.sp_delete_job @job_name=@JobName
FETCH DeleteJobs INTO @JobName 
END
CLOSE DeleteJobs
DEALLOCATE DeleteJobs