Un moyen de commencer avec ceci serait le suivant:
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 "table" SysDepends vous indiquera quels objets dépendent les uns des autres. Il est hiérarchique, vous devrez donc peut-être exécuter récursivement SysDepends jusqu'à ce que vous commenciez à obtenir des valeurs NULL. Parfois, sysdepends est incomplète, voici un article avec quelques autres suggestions .
La "table" SysObjects vous donnera des informations sur les objets de la base de données. Les colonnes type (également xtype) vous indiquent ce qu'est l'élément: table définie par l'utilisateur, proc stockée, déclencheur, etc.
Ensuite, vous souhaiterez que sp_helptext crache le texte d'une procédure stockée. Cela ne reproduira pas le texte d'une procédure stockée cryptée.
Toute solution complète impliquera la programmation de quelque chose, en particulier lorsque des procédures stockées et des déclencheurs chiffrés sont impliqués. Un exemple d'article sur la détermination par programme des éléments de la base de données. Le type de données nécessaire pour déchiffrer les proc stockés SQL Server 2000 est apparu dans SQL Server 2005, vous ne pouvez donc pas utiliser SQL dans SQL Server 2000 pour déchiffrer ses propres procs stockés chiffrés (mais vous pouvez les déchiffrer dans SQL dans SQL Server 2005) et il le ferait ne me surprendrait pas s'il en était de même pour la transition de 2005 à 2008. J'ai perdu tout intérêt à décrypter des procédures stockées il y a plusieurs années.
Je sais comment trouver par programmation toutes les informations dont vous avez besoin pour scripter les objets. Mais pour les écrire, vous devrez peut-être écrire le code de génération de script vous-même.
Si vous écrivez du code pour tout savoir sur les objets existants, le terme pour google est "Dictionnaire de données SQL Server".
Je vais vous donner quelques exemples de départ.
Pour rechercher toutes les contraintes de clé étrangère sur une table spécifique:
Pour rechercher toutes les contraintes de clé étrangère faisant référence à une table spécifique:
la source