• I modified your last query a bit and obtained something that seems to be faster on SQL Server 2000:

    SELECT distinct O.Name, O.Type

    FROM

    (

     select

     s1.id,

     cast(coalesce(s1.text, '') as varchar(8000)) +

     cast(coalesce(s2.text, '') as varchar(8000))

     as [text]

     from syscomments s1 left join syscomments s2

     on s2.id = s1.id and s2.colid = s1.colid + 1

    ) C

    INNER JOIN sysobjects O ON C.id = O.Id

    WHERE C.TEXT LIKE '%yourSearchString%'