Alguma vez você já parou para pensar em como as functions, procedures, constraints, etc ficam armazenadas no banco? Onde fica a definição dos objetos?
No SQL Server 2000 existia uma tabela de sistema chamada syscomments. Essa tabela retornava 1 linha a cada 4000 caracteres que tivesse a definição do objeto.
Por exemplo, vejam o resultado da consulta abaixo:
| 
					 1 2  | 
						SELECT OBJECT_NAME(id), colid, text FROM syscomments  | 
					

Notem que eu tenho 3 objetos retornados, porém para “montar” a procedure, eu preciso ler as 8 linhas retornadas.
A partir do SQL Server 2005, muitas tabelas de sistemas se tornaram views, com o objetivo de manter a compatibilidade com sistemas legados (Compatibility Views) e elas não devem mais ser utilizadas em novas implementações, pois foram substituídas pelas Catalog Views. São elas que apresentam os metadados dos objetos criados dentro do SQL Server. E por objetos, nesse caso, entenda como: Tabelas, funções, procedures, etc…
As views que retornam as definições são:
- sql_modules: retorna as definições de Procedures, Views, Functions, Triggers…
 - default_constraints: Como o prórprio nome diz, retorna as definições das constraints default criadas.
 - check_constraints: Retorna as definições das check constraints
 
Seguem algumas consultas para verificar a definição de alguns objetos:
| 
					 1 2 3 4  | 
						SELECT sm.object_id, OBJECT_NAME(sm.object_id) AS object_name, o.type_desc, sm.definition FROM sys.sql_modules AS sm JOIN sys.objects AS o ON sm.object_id = o.object_id ORDER BY o.type -- P, RF, V, TR, FN, IF, TF e R;  | 
					
| 
					 1 2 3 4 5 6  | 
						SELECT d.name, object_name(d.object_id), object_name(parent_object_id), d.definition FROM sys.default_constraints AS d INNER JOIN sys.columns AS c ON d.parent_column_id = c.column_id WHERE d.parent_object_id = OBJECT_ID(N'Nome_Da_Tabela', N'U') AND c.name = 'Nome_Da_Coluna';  | 
					
| 
					 1 2 3  | 
						SELECT chk.name, object_name(chk.object_id), object_name(chk.parent_object_id), chk.definition FROM sys.check_constraints chk WHERE chk.parent_object_id = OBJECT_ID(N'Nome_Da_Tabela', N'U')  | 
					
Lembrando que: Quando alguma definição estiver como NULL, é porque o objeto em questão foi criado com a opção WITH ENCRYPTION.
Espero que tenham gostado!
[]’s!
Fontes:
- syscomments (SQL 2000): http://msdn.microsoft.com/en-us/library/aa260393(v=sql.80).aspx
 - Compatibility Views: http://msdn.microsoft.com/pt-br/library/ms187376.aspx
 - sys.syscomments (SQL 2012): http://msdn.microsoft.com/pt-br/library/ms186293.aspx
 - Catalog Views: http://msdn.microsoft.com/pt-br/library/ms174365.aspx