Abhängigkeiten einer Entität von anderen Entitäten anzeigen

gamma_matrices

Cadet 4th Year
Registriert
Sep. 2018
Beiträge
121
Hallo allerseits,

ich versuche eine Query (SQL Server) zu ermitteln bzgl. des Titels.
Egal welche der Vorschläge ich im Netz verwende, bekomme ich immer wieder eine leere Menge als Ergebnis angezeigt.
Ich habe schon zB versucht mit:

1.
USE <database>;
GO
SELECT * FROM sys.sql_expression_dependencies
WHERE referenced_id = OBJECT_ID(N'schema.tablename');
GO

2.
SELECT
referencing_schema_name, referencing_entity_name,
referencing_class_desc, is_caller_dependent
FROM sys.dm_sql_referencing_entities ('<TableName>', 'OBJECT');

3.
SELECT
referenced_schema_name, referenced_entity_name, referenced_minor_name,
referenced_class_desc, is_caller_dependent, is_ambiguous
FROM sys.dm_sql_referenced_entities ('<StoredProcedureName>', 'OBJECT');

4.
SELECT distinct schema_name(so.uid) + '.' + so.name
FROM syscomments sc
INNER JOIN sysobjects so on sc.id = so.id
WHERE sc.text like '%Name%'

Hat jemand von euch eine Idee, wieso es nicht klappt, ich nur Ergebnis ohne Inhalt bekomme?🤔
Habt ihr vielleicht eine andere Alternative?

Danke!
 
Zuletzt bearbeitet:
Ich möchte einfach die Abhängigkeit zB einer Tabelle A von B oder auch von mehreren durch gemeinsamen Schlüssel (PK/FK) sehen. Also eine Alternative zu "Abhängigkeiten anzeigen" einer Spalte in SQL Server durch eine Query zu ersetzen.
 
Jemand eine Idee, wie die Query aussehen müsste/könnte, damit das gewünschte Ergebnis zustande kommt?
 
SELECT * from sys.objects where parent_object_id = OBJECT_ID('<tableName>')

Vielleicht hilft dir das. Da kannst dann noch auf F (FOREIGN_KEY_CONSTRAINT) für den type einschränken.
 
Dazu die Query aus dieser Antwort nutzen.

Mit den Abfragen die du genannt hast, werden keine Abhängigkeiten über FK/PK angezeigt:
* A table is tracked as a referencing entity only when it references a Transact-SQL module, user-defined type, or XML schema collection in the definition of a computed column, CHECK constraint, or DEFAULT constraint.
MSDN Quelle

Beispiel:

SQL:
DROP TABLE IF EXISTS [B]
DROP TABLE IF EXISTS [A]
GO

CREATE TABLE [A] (
    [ID] BIGINT NOT NULL IDENTITY (1, 1),
    CONSTRAINT [PK_A] PRIMARY KEY (ID)
)
GO

CREATE TABLE [B] (
    [ID] BIGINT NOT NULL IDENTITY (1, 1),
    [A_ID] BIGINT NOT NULL,
    CONSTRAINT [PK_B] PRIMARY KEY (ID),
    CONSTRAINT [FK_B_A] FOREIGN KEY ([A_ID]) REFERENCES [A]([ID])
)
GO

SELECT
    src.name AS [dependent],
    srcCol.name AS [dependentColumn],
    dst.name AS [dependency],
    dstCol.name AS [dependencyColumn]
FROM
    sys.foreign_key_columns fk
    INNER JOIN sys.columns srcCol ON fk.parent_column_id = srcCol.[column_id]
        AND fk.parent_object_id = srcCol.[object_id]
    INNER JOIN sys.tables src ON src.[object_id] = fk.parent_object_id
    INNER JOIN sys.tables dst ON dst.[object_id] = fk.[referenced_object_id]
    INNER JOIN sys.columns dstCol ON fk.referenced_column_id = dstCol.[column_id]
        AND fk.[referenced_object_id] = dstCol.[object_id]
GO

Ergebnis:

dependentdependentColumndependencydependencyColumn
BA_IDAID
 
  • Gefällt mir
Reaktionen: gamma_matrices
Zurück
Oben