Como identificar objetos do sistema ao visualizar a lista de objetos de banco de dados do SQL Serve

Estou tentando listar todos os procedimentos armazenados de todos os bancos de dados no meu servidor e não consigo filtrar objetos do sistema de maneira confiável. Eu estava usando:

SELECT *
  FROM sysobjects
 WHERE id > 100

O que parece funcionar bem em todos os bancos de dados, exceto no MSDB, que está cheio de uma tonelada de procs armazenados com IDs de aparência normal, mas são procs armazenados no sistema. Pelo que sei, não há como filtrar os procs armazenados do sistema usando qualquer um dos valores da tabela sysobjects - mais alguém sabe de um valor que possa ser usado para filtrar?

Eles estão todos marcados como type = "P", o que significa que é um processo armazenado, mas parece não haver sinalizador para especificar se é um processo armazenado no sistema ou um usuário. Posso usar a exibição sys.objects e filtrar "IsMsShipped = 0", mas gostaria de algo que também funcione no SQL 2000, portanto, prefiro usar as exibições mais antigas (como sysobjects), se possível.

questionAnswers(2)

yourAnswerToTheQuestion