If the error number is 13,000 or greater and the severity is 18 or lower then it could have been either the database engine or a user. Users cannot explicitly raise errors with a number under 13,000 or with a severity of 19 or higher.
Other than that there is no real way to tell, although users do not typically raise errors with an error number less than 50,000:
SELECT *
FROM sys.messages
WHERE message_id >= 13000
AND language_id = 1033
ORDER BY message_id
There are no special teachers of virtue, because virtue is taught by the whole community.
--Plato