Dieser Artikel auf TechRepublic
Finding dependencies in SQL Server 2005
beschreibt eine Möglichkeit, das zu tun:
Dieses Tutorial zeigt, wie Sie kann schreiben Sie eine Prozedur, die alle Objekte, die auf andere Objekte abhängig sind.
Hier ist der Code das System gespeicherte Prozedur zum Auffinden von Objektabhängigkeiten zu erstellen: mit Rekursion Spaziergang durch die Abhängigkeitskette
USE master
GO
CREATE PROCEDURE sp_FindDependencies
(
@ObjectName SYSNAME,
@ObjectType VARCHAR(5) = NULL
)
AS
BEGIN
DECLARE @ObjectID AS BIGINT
SELECT TOP(1) @ObjectID = object_id
FROM sys.objects
WHERE name = @ObjectName
AND type = ISNULL(@ObjectType, type)
SET NOCOUNT ON ;
WITH DependentObjectCTE (DependentObjectID, DependentObjectName, ReferencedObjectName, ReferencedObjectID)
AS
(
SELECT DISTINCT
sd.object_id,
OBJECT_NAME(sd.object_id),
ReferencedObject = OBJECT_NAME(sd.referenced_major_id),
ReferencedObjectID = sd.referenced_major_id
FROM
sys.sql_dependencies sd
JOIN sys.objects so ON sd.referenced_major_id = so.object_id
WHERE
sd.referenced_major_id = @ObjectID
UNION ALL
SELECT
sd.object_id,
OBJECT_NAME(sd.object_id),
OBJECT_NAME(referenced_major_id),
object_id
FROM
sys.sql_dependencies sd
JOIN DependentObjectCTE do ON sd.referenced_major_id = do.DependentObjectID
WHERE
sd.referenced_major_id <> sd.object_id
)
SELECT DISTINCT
DependentObjectName
FROM
DependentObjectCTE c
END
Dieses Verfahren verwendet eine Common Table Expression (CTE) um zu allen Objekten zu erhalten, die sind, abhängig von dem Objekt, das in dem Verfahren übergeben wird. Die Hauptquelle der Daten stammt aus der Systemsicht sys.sql_dependencies, die Abhängigkeitsinformationen für alle Ihre Objekte in der Datenbank enthält.