Một cách để bắt đầu với điều này sẽ là như sau:
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)
Các SysDepends "bảng" sẽ cho bạn biết đối tượng là phụ thuộc vào nhau. Nó là phân cấp, vì vậy bạn có thể phải chạy đệ quy qua SysDepends cho đến khi bạn bắt đầu nhận được null. Đôi khi, sysdepends không đầy đủ, đây là một bài viết với một số gợi ý khác .
Các sysobjects "bảng" sẽ cho bạn biết một số nội dung về các đối tượng trong cơ sở dữ liệu. Các cột loại (cũng là xtype) cho bạn biết mục này là gì: bảng do người dùng xác định, Proc được lưu trữ, kích hoạt, v.v.
Sau đó, bạn sẽ muốn sp_helptext nhổ văn bản của một thủ tục được lưu trữ. Điều này sẽ không tái tạo văn bản của một thủ tục lưu trữ được mã hóa.
Bất kỳ giải pháp đầy đủ và hoàn chỉnh nào cũng sẽ liên quan đến việc lập trình một cái gì đó, đặc biệt là khi các thủ tục và trình kích hoạt được lưu trữ được mã hóa có liên quan. Một bài viết mẫu về lập trình xác định các mục trong DB. Kiểu dữ liệu cần thiết để giải mã các procs lưu trữ SQL Server 2000 xuất hiện trong SQL Server 2005, vì vậy bạn không thể sử dụng SQL trong SQL Server 2000 để giải mã các procs được lưu trữ được mã hóa của riêng nó (nhưng bạn có thể giải mã chúng trong SQL trong SQL Server 2005) và nó sẽ không làm tôi ngạc nhiên nếu điều tương tự cũng đúng với giai đoạn chuyển đổi 2005 sang 2008. Tôi đã mất hứng thú với việc giải mã các thủ tục lưu trữ vài năm trước.