
Documenting database objects within the database makes logical sense versus trying to maintain separate documentation externally. My typical practice has been to create SQL Server extended properties at the database, table/view and column levels. Then you can write a query against the system objects to retrieve metadata about your database.
You can create extended properties via the GUI or script it out.