Una forma de comenzar con esto sería la siguiente:
DECLARE @TableName VARCHAR(50)
DECLARE @ObjectID INT
SET @TableName = '' -- the name of the objects you want to investigate
SELECT @ObjectID = [id] FROM sysobjects WHERE name=@TableName
SELECT * FROM sysobjects WHERE name=@TableName
UNION
SELECT * FROM sysobjects WHERE id in (SELECT id FROM sysdepends WHERE depid= @ObjectID)
La "tabla" de SysDepends le dirá qué objetos dependen de otro. Es jerárquico, por lo que es posible que deba ejecutar SysDepends de forma recursiva hasta que comience a obtener valores nulos. A veces, sysdepends está incompleto, aquí hay un artículo con algunas otras sugerencias .
La "tabla" de SysObjects le dirá algunas cosas sobre los objetos en la base de datos. Las columnas de tipo (también xtype) le indican cuál es el elemento: tabla definida por el usuario, proceso almacenado, disparador, etc.
Entonces querrá que sp_helptext escupe el texto de un procedimiento almacenado. Esto no reproducirá el texto de un procedimiento almacenado cifrado.
Cualquier solución completa y completa implicará programar algo, especialmente cuando estén involucrados procedimientos almacenados encriptados y disparadores. Un artículo de muestra sobre la determinación programática de los elementos en la base de datos. El tipo de datos necesario para descifrar los procesos almacenados de SQL Server 2000 se mostró en SQL Server 2005, por lo que no podría usar SQL en SQL Server 2000 para descifrar sus propios procesos almacenados cifrados (pero podría descifrarlos en SQL en SQL Server 2005) y lo haría No me sorprende si lo mismo fue cierto para la transición de 2005 a 2008. Perdí interés en descifrar los procedimientos almacenados hace varios años.
Sé cómo encontrar programáticamente toda la información que necesita para crear un script para los objetos. Pero para realmente escribirlos, es posible que deba escribir el código de generación del script usted mismo.
Si está escribiendo código para averiguar todo sobre los objetos existentes, el término para google es "Diccionario de datos de SQL Server".
Te daré algunos ejemplos iniciales.
Para buscar todas las restricciones de clave externa en una tabla específica:
Para encontrar todas las restricciones de clave externa que hacen referencia a una tabla específica:
fuente