2016-03-29 19 views
0

SQL tablonun bağımlılıklarını gösterebilen komut dosyaları gördüm, ancak bağımlılık olmayan tabloların tablo adlarını seçebilecek bir komut dosyası yok.Bağımlılık içermeyen SQL tablo adlarını seçin

select * from INFORMATION_SCHEMA.TABLES T 
where T.TABLE_NAME like 'Q%' 
and not exists (
    select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC 
    where TC.TABLE_NAME  = T.TABLE_NAME 
    and TC.CONSTRAINT_TYPE = 'FOREIGN KEY' -- add conditions as needed 
) 
order by TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME 
+3

Ne yaparsınız? "bağımlılıklar" ile demek? –

+0

MSSQL bağımlılıklarına başvuruyorum (standart bir SQL özelliği olduğunu varsaydım): https://msdn.microsoft.com/en-us/library/ms190624.aspx – fifthace

+0

@fithace. . . Bu, SQL Server Management Studio'da bir özelliktir. Herhangi bir tetikleyiciye, saklı yordamlara, kullanıcı tanımlı işlevlere, görünümlere ve belki de kısıtlamalara atıfta bulunduğunu düşünüyorum. Belgelere atıfta bulunulan şeyin ne yapacağını açıkladığını düşünüyorum: 'sys.sql_expression_dependencies' işlevini kullanın. –

cevap

1

Sen sola olmalıdır:

İdeal olarak, ben

SELECT t.NAME AS TableName 
FROM sys.Tables t 
where t.Name LIKE 'Q%' and no dependencies! 
+0

Bu harika çalıştı. Teşekkürler Jamie! – fifthace

1

bu konuda yani nasıl (aşağıda görüldüğü gibi) Q ile başlayan tüm tablo isimleri ve MSSQL hiçbir bağımlılıkları, seçmek istiyorum sys.sql_expression_dependencies üzerine katılın ve başvurulan tabloları alın, bir şey gibi:

SELECT t.NAME AS TableName 
    FROM sys.Tables t 
LEFT JOIN sys.sql_expression_dependencies d ON d.referenced_id = t.object_id 
    WHERE t.Name LIKE 'Q%' 
     AND d.referenced_id IS NULL 
+0

Bu, tüm tabloları, ayrıca bağımlılığı olanları verir. – fifthace

İlgili konular