Woher kann ich wissen, welcher gespeicherte Verfahren oder welcher Auslöser eine Tabelle auf SQL Server 2008 R2 verwendet?

dba.stackexchange https://dba.stackexchange.com/questions/7956

Frage

Dies ist der Fall, dass es in der DB, in der ich überprüfe Gleiches habe ich die DB nicht entworfen, ich nehme nur die Wartung einer Anwendung, die diese DB verwendet, daher kenne ich den Namen dieser gespeicherten Verfahren oder Auslöser nicht. Ich möchte dieses gespeicherte Verfahren finden oder auslösen Sie den Code und ändern Sie ihn, um diesen "Benutzerverlauf" länger auf der Tabelle zu lassen.

Jemand sagte mir, ich solle die Tabelle "SysObjects" überprüfen, in der ich tatsächlich etwas mit demselben Namen der Tabelle sehen kann, aber dies sind die einzigen Informationen, die ich abrufen konnte, einen Rat?

Vielen Dank.

War es hilfreich?

Lösung

Suchen Sie den gesamten Code mithilfe sys.sql_modules

SELECT OBJECT_NAME(object_id)
FROM sys.sql_modules sm
WHERE definition LIKE '%Mytable%'

Oder verwenden Red Gate SQL -Suche Welches ist völlig kostenlos

Unterlassen Sie Verwenden

Andere Tipps

Ausprobieren ApexSQL -Suche

Die APEXSQL-Suche ist ein kostenloses SQL Server Management Studio und Visual Studio Add-In, das unter anderem die Funktion zur Ansichtsabhängigkeiten hat. Die Feature der Ansichtsabhängigkeit kann alle Beziehungen der SQL -Datenbankobjekte visualisieren, einschließlich derer zwischen verschlüsselten und Systemobjekten, SQL Server 2012 -spezifischen Objekten und Objekten, die in Datenbanken gespeichert sind, die mit transparenter Datenverschlüsselung verschlüsselt sind (TDE)

Mit der Funktion der Ansichtsabhängigkeiten können Sie auch das Diagrammlayout für visuelle Abhängigkeiten einrichten und anpassen

Haftungsausschluss: Ich arbeite für ApexSQL als Support -Ingenieur

Als zukünftige Referenz ab 2008 gibt es auch ein DMV, der verwendet werden kann. sys.dm_sql_referencing_entities. Ich bevorzuge es im Allgemeinen der Verwendung von SQL_MODULES, da es unter anderem falsch positive Ergebnisse vermeidet. Ich habe darüber gesprochen hier Aber im Grunde genommen, wenn Sie ein Stück Code wie diesen haben:

SELECT OBJECT_SCHEMA_NAME(object_id), OBJECT_NAME(object_id) 
FROM sys.sql_modules WHERE [definition] LIKE '%ABC%'

Sie erhalten Ergebnisse für die Tabelle ABC, die Tabelle ABCLOG DIE View vw_abc, die gespeicherte Prozedur SP_UPDATE_ABC usw. Auch mein Wissen, das der DMV verschließt .

Die DMV -Version derselben Abfrage lautet:

SELECT * FROM sys.dm_sql_referencing_entities('dbo.ABC', 'OBJECT')

Sie können auch die verwenden sys.sql_expression_dependencies Katalogansicht. Verwenden Sie diese Abfrage:

SELECT 
referencing_object_name = obj.name, 
referencing_object_type_desc = obj.type_desc, 
referenced_object_name = referenced_entity_name
FROM sys.sql_expression_dependencies sd 
INNER JOIN sys.objects obj 
ON sd.referencing_id = obj.[object_id] 
WHERE referenced_entity_name = 'MyTable'
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top