在 SQL server (2005+) 中对多个数据库进行查询时,我发现有时需要排除系统数据库(master、model、tempdb、msdb 和 distribution)
除了这些,还有其他方法可以过滤吗
where name not in (''master', 'model', 'tempdb', 'msdb', 'distribution')
我看过 sys.databases 和 master.dbo.sysdatabases (不一样!)
[UPDATE] 一个示例查询,我用它来查找启用了日志传送的数据库
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)