我已经看到了可以显示SQL表的依赖关系的脚本,但是没有脚本可以选择没有依赖关系的表的表名。选择不依赖的SQL表名
理想情况下,我想选择初始的Q(如下图所示),所有的表名和MSSQL没有依赖性,即
SELECT t.NAME AS TableName
FROM sys.Tables t
where t.Name LIKE 'Q%' and no dependencies!
我已经看到了可以显示SQL表的依赖关系的脚本,但是没有脚本可以选择没有依赖关系的表的表名。选择不依赖的SQL表名
理想情况下,我想选择初始的Q(如下图所示),所有的表名和MSSQL没有依赖性,即
SELECT t.NAME AS TableName
FROM sys.Tables t
where t.Name LIKE 'Q%' and no dependencies!
你应该留下加入sys.sql_expression_dependencies并获取没有被引用的表格,如:
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
这很好。谢谢杰米! – fifthace
如何:
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
这给出了所有表,也包括那些具有依赖性的表。 – fifthace
你是什么意思是“依赖”? –
我指的是MSSQL依赖关系(我认为这是一个标准的SQL功能):https://msdn.microsoft.com/en-us/library/ms190624.aspx – fifthace
@fithace。 。 。这是SQL Server Management Studio中的一项功能。我认为它指的是任何触发器,存储过程,用户定义的函数,视图和可能的约束。我认为所引用的文档解释了要做什么:使用'sys.sql_expression_dependencies'。 –