Один из способов начать это было бы следующим:
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)
« Таблица » SysDepends скажет вам, какие объекты зависят от другого. Он иерархический, поэтому вам, возможно, придется рекурсивно проходить через SysDepends, пока вы не начнете получать значения NULL. Иногда sysdepends является неполным, вот статья с некоторыми другими предложениями .
« Таблица » SysObjects расскажет вам кое-что об объектах в базе данных. Столбцы типа (также xtype) сообщают вам, что это за элемент: пользовательская таблица, сохраненный процесс, триггер и т. Д.
Затем вы захотите, чтобы sp_helptext выплевывал текст хранимой процедуры. Это не будет воспроизводить текст зашифрованной хранимой процедуры.
Любое полное и законченное решение будет включать в себя программирование чего-либо, особенно когда задействованы зашифрованные хранимые процедуры и триггеры. Один пример статьи по программному определению элементов в БД. Тип данных, необходимый для дешифрования хранимых процов SQL Server 2000, обнаружился в SQL Server 2005, поэтому вы не могли использовать SQL в SQL Server 2000 для дешифрования своих зашифрованных хранимых процов (но вы могли бы дешифровать их в SQL в SQL Server 2005), и это меня не удивит, если то же самое будет верно для перехода с 2005 на 2008 год. Я потерял интерес к расшифровке хранимых процедур несколько лет назад.
Я знаю, как программно найти всю информацию, которая необходима для сценариев объектов. Но чтобы на самом деле их писать, вам, возможно, придется написать код генерации сценария самостоятельно.
Если вы пишете код, чтобы узнать все о существующих объектах, Google использует термин «Словарь данных SQL Server».
Я приведу несколько начальных примеров.
Чтобы найти все ограничения внешнего ключа для конкретной таблицы:
Чтобы найти все ограничения внешнего ключа, которые ссылаются на конкретную таблицу:
источник