Sql server 我可以在SQL Server中找到视图的外键关系吗?

Sql server 我可以在SQL Server中找到视图的外键关系吗?,sql-server,foreign-keys,foreign-key-relationship,database-metadata,Sql Server,Foreign Keys,Foreign Key Relationship,Database Metadata,我构建了一个使用表外键的工具,但我想扩展它以支持视图。在SQL Server 2008及更高版本中,假设您只对同一数据库中的依赖项感兴趣,则可以使用以下查询来确定每个视图中引用的所有表、视图和函数: ;WITH x AS ( SELECT v = QUOTENAME(OBJECT_SCHEMA_NAME(d.referencing_id)) + '.' + QUOTENAME(OBJECT_NAME(d.referencing_id)), t = QUOTENAME(OBJE

我构建了一个使用表外键的工具,但我想扩展它以支持视图。

在SQL Server 2008及更高版本中,假设您只对同一数据库中的依赖项感兴趣,则可以使用以下查询来确定每个视图中引用的所有表、视图和函数:

;WITH x AS
(
 SELECT
  v = QUOTENAME(OBJECT_SCHEMA_NAME(d.referencing_id))
     + '.' + QUOTENAME(OBJECT_NAME(d.referencing_id)),
  t = QUOTENAME(OBJECT_SCHEMA_NAME(d.referenced_id))
     + '.' + QUOTENAME(OBJECT_NAME(d.referenced_id)),
  td = o2.type_desc
 FROM sys.sql_expression_dependencies AS d
 INNER JOIN sys.objects AS o1
 ON d.referencing_id = o1.[object_id]
 INNER JOIN sys.objects AS o2
 ON d.referenced_id = o2.[object_id]
 WHERE o1.type_desc = 'VIEW'
)
SELECT [View] = v, Referenced_Object = t, [Type] = td
 FROM x
 GROUP BY v, t, td
 ORDER BY v, t; 

如何在视图上或视图上创建外键?你是说依赖关系吗?如果是,SQL Server的版本是什么?我们通常使用SQL Server 2008。我需要确定视图的外键关系,然后生成代码来执行与用户选择的其他表或视图的连接(我目前这样做,但只是针对表)。所以我假设我需要为每个视图/列标识原始表/列(假设该列未被计算)。是的,这一点都不重要。顺便说一句。。。我在C#中做这件事,所以我有SMOAPI。我怀疑我可能最终不得不解析视图sql。