Действительно ли возможно запросить системные базы данных в SQL-сервере, не используя имена?

При выполнении запроса по нескольким базам данных в SQL-сервере (2005 +) я иногда нахожу необходимым исключить системную базу данных (ведущее устройство, модель, tempdb, msdb и распределение)

Есть ли ЛЮБОЙ ДРУГОЙ способ отфильтровать их, кроме того,

where name not in (''master', 'model', 'tempdb', 'msdb', 'distribution')

Я посмотрел на sys.databases и master.dbo.sysdatabases (не то же!)

[ОБНОВЛЕНИЕ] запрос в качестве примера, который я использую для поиска баз данных, которые имеют logshipping, включило

select d.name, p.last_backup_date, s.secondary_server, s.secondary_database
from sys.databases d
    left outer join msdb..log_shipping_primary_databases p on p.primary_database = d.name
    left outer join msdb..log_shipping_primary_secondaries s on s.primary_id = p.primary_id
where name not in ('model','master','tempdb','distribution','msdb')
order by d.name

[ОБНОВЛЕНИЕ] Это, кажется, 'наименее плохой' путь, если у кого-то еще нет лучшего пути?

SELECT * FROM 
master.sys.databases AS dtb 
WHERE (dtb.database_id < 5 or dtb.is_distributor = 1)
6
задан edosoft 5 August 2010 в 08:04
поделиться