Puedes hacerlo si haces uso de uno procedimientos almacenados que trae el Sql Server.... estos procedimientos del sistema residen en la base master y puedes invocarlos directamente como una sentencia sql.....
Aca van algunos :
1.- Para extraer el codigo de un procedimento almacenado no encriptado
sp_helptext nombre de un procedimiento
Ejemplo
sp_helptext spa_trae_nombres
2.- Para extraer la creacion de una base de datos usas
sp_helpdb nombre de base
Ejemplo
sp_helpdb CVC
3.- Para extraer la definicion de una tabla o vista usas
sp_help nombre de la tabla o vista
Ejemplo
sp_help prueba
4.- Para extraer las columnas de una tabla usas
sp_columns nombre de tabla
Ejemplo
sp_columns prueba
5.- Para conocer cuales son los indices definidos en una tabla usas
sp_helpindex nombre de tabla
Ejemplo
sp_helpindex prueba
Ahora tambien hay un metodo largo para llegar a obtener lo que te indico; puesto que todos estos objetos estan almacenadas en tablas de sistema y para llegar a lo mismo podrias hacer select a ellas....... estas son por ejemplo sysobjects, sysdatabases, sysindexes, syslogins, susprotects,etc.
Espero te sirva