• You certainly don't need a cursor, as others have shown you. However, may I suggest you approach this from a different angle? It's all very well checking you have a backup job with the database name in it for each database, but what if one of them is disabled, or not scheduled, or wrongly scheduled, or is backing up the wrong database? I think you'd be better checking the backupset table in msdb to verify that backups have actually taken place. You can use a script like the one below and schedule it to run regularly. I've got a central SSIS package that runs against all servers and compares the results with what is expected, checks that the backup files exist and reports any discrepancies.

    SELECT

    r.DBName

    ,r.[type]

    ,r.BackupStart

    ,s.backup_finish_date

    ,s.backup_size

    ,m.physical_device_name

    FROM ( --gets most recent of each type of backup for each DB

    SELECT

    d.name AS DBName

    ,b.[type]

    ,MAX(b.backup_start_date) AS BackupStart

    FROM

    master..sysdatabases d

    LEFT JOIN

    msdb..backupset b

    ON

    d.name = b.database_name

    JOIN

    msdb..backupmediafamily f ON b.media_set_id = f.media_set_id

    GROUP BY

    d.name

    ,b.type

    ) r

    JOIN

    msdb..backupset s

    ON

    r.DBName = s.database_name AND r.[type] = s.[type] AND r.BackupStart = s.backup_start_date

    JOIN

    msdb..backupmediafamily m ON s.media_set_id = m.media_set_id

    ORDER BY

    r.DBName

    ,r.[type]

    John