2011-03-09 27 views
5

Verilen tablonun, yabancı anahtarlar aracılığıyla başvurulan diğer tabloları da içeren belirli bir tabloya bağımlı tüm db nesnelerini bulmak istiyorum. Ben "sp_depends" kullanmayı denedim ve bana sprocs, görünümleri ve tetikleyicileri verir, ancak diğer tabloların verilen tablodaki yabancı anahtarlara sahip olduğunu söylemez. Herhangi bir yardım? SSMS yılındaSQL Server - tüm yabancı anahtar bağımlılıklarını görüntüleme

cevap

9
select OBJECT_NAME(parent_object_id), OBJECT_NAME(referenced_object_id) 
    from sys.foreign_keys 
    where referenced_object_id = object_id('SchemaName.TableName') 
+0

yazdırılır. Teşekkürler. – thenoob

1

: sağ tablonuzu tıklayıp anahtar madde sys.foreign_keys görünümüdür "View Dependencies"

+0

Bunu belirtmeliydim, ama SQL'de yapabilmek istiyorum - büyük olasılıkla bağımlılıkların bir raporunu oluşturacağım – thenoob

+0

sadece saklı yordamların, tetikleyicilerin ve diğer şeylerin bağımlılıklarını gösterir .. yabancı anahtar bağımlılığı değil – pufos

2

tıklayın. Ben mssqltips.com bir makalesinde örnek olarak yararlı olabilecek bir sorgu ...

1

Identify all of your foreign keys in a SQL Server database Ayrıca şunu da deneyin bulundu:

USE AUX; <- use your database name 
GO 
SELECT f.name AS ForeignKey, 
SCHEMA_NAME(f.SCHEMA_ID) SchemaName, 
OBJECT_NAME(f.parent_object_id) AS TableName, 
COL_NAME(fc.parent_object_id,fc.parent_column_id) AS ColumnName, 
SCHEMA_NAME(o.SCHEMA_ID) ReferenceSchemaName, 
OBJECT_NAME(f.referenced_object_id) AS ReferenceTableName, 
COL_NAME(fc.referenced_object_id,fc.referenced_column_id) AS ReferenceColumnName 
FROM sys.foreign_keys AS f 
INNER JOIN sys.foreign_key_columns AS fc ON f.OBJECT_ID = fc.constraint_object_id 
INNER JOIN sys.objects AS o ON o.OBJECT_ID = fc.referenced_object_id 
GO 

ve son GO önce sadece bağımlılık görmek için where OBJECT_NAME(f.parent_object_id) = 'your_table_name' ekleyebilir

bu tablo için.

O Tam olarak ne gerekli TableName | Column name (FK) | Reference TableName | Reference Column Name

+0

en iyi cevap, bence. –

İlgili konular