Uma maneira de começar com isso seria o seguinte:
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)
A "tabela" do SysDepends informará quais objetos dependem de outro. É hierárquico, portanto, talvez você precise executar recursivamente o SysDepends até começar a receber nulos. Às vezes, sysdepends está incompleto, aqui está um artigo com algumas outras sugestões .
A "tabela" do SysObjects informará algumas coisas sobre os objetos no banco de dados. As colunas de tipo (também xtype) informam qual é o item: tabela definida pelo usuário, processo armazenado, gatilho etc.
Então você vai querer sp_helptext cuspir o texto de um procedimento armazenado. Isso não reproduzirá o texto de um procedimento armazenado criptografado.
Qualquer solução completa e completa envolverá a programação de algo, especialmente quando estiverem envolvidos procedimentos armazenados criptografados e gatilhos. Um artigo de amostra sobre como determinar programaticamente os itens no banco de dados. O tipo de dados necessário para descriptografar os procs armazenados do SQL Server 2000 era exibido no SQL Server 2005, portanto, não era possível usar o SQL no SQL Server 2000 para descriptografar seus próprios procs armazenados criptografados (mas era possível descriptografá-los no SQL no SQL Server 2005). não me surpreenda se o mesmo se aplica à transição de 2005 para 2008. Perdi o interesse em descriptografar procedimentos armazenados há vários anos.
Eu sei como encontrar programaticamente todas as informações necessárias para o script dos objetos. Mas, para realmente criá-los, você pode precisar escrever o código de geração de script.
Se você está escrevendo um código para descobrir tudo sobre os objetos existentes, o termo para o google é "Dicionário de Dados do SQL Server".
Vou dar alguns exemplos iniciais.
Para encontrar todas as restrições de chave estrangeira em uma tabela específica:
Para encontrar todas as restrições de chave estrangeira que fazem referência a uma tabela específica:
fonte