Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在ms sql server中查找包含信息的外键\u架构_Sql Server_Sql Server 2008_Foreign Keys_Information Schema - Fatal编程技术网

Sql server 在ms sql server中查找包含信息的外键\u架构

Sql server 在ms sql server中查找包含信息的外键\u架构,sql-server,sql-server-2008,foreign-keys,information-schema,Sql Server,Sql Server 2008,Foreign Keys,Information Schema,我试图找到所有外键指向特定表的表。所以我写了这个: select t1.TABLE_NAME as pointsfrom, t2.TABLE_NAME as pointsto from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS r join INFORMATION_SCHEMA.TABLE_CONSTRAINTS t1 on t1.CONSTRAINT_NAME=r.CONSTRAINT_NAME joi

我试图找到所有外键指向特定表的表。所以我写了这个:

select t1.TABLE_NAME as pointsfrom, t2.TABLE_NAME as pointsto
        from INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS r
        join INFORMATION_SCHEMA.TABLE_CONSTRAINTS t1 on t1.CONSTRAINT_NAME=r.CONSTRAINT_NAME
        join INFORMATION_SCHEMA.TABLE_CONSTRAINTS t2 on t2.CONSTRAINT_NAME=r.UNIQUE_CONSTRAINT_NAME
        where t2.table_name = @mytable
这在90%的时间内都有效,确切地说,对于我正在处理的数据库中的24个外键中的22个。但对于2个FK,唯一的\u约束\u名称与表\u约束中的任何名称都不匹配

名字也有点滑稽。其中之一是“环境指示器”,带有空格。FK指向的字段名为“environment_designator”,带有下划线。另一个有一个唯一的名称“filename is unique”,它与我在“from”或“to”表的定义中看到的任何内容都不对应

是否有其他地方我应该在唯一约束名称上查找匹配项?

尝试以下方法:

SELECT OBJECT_NAME(parent_object_id), OBJECT_NAME(referenced_object_id)
    FROM sys.foreign_keys
    WHERE referenced_object_id = OBJECT_ID(@mytable)

嗯,这看起来确实有效。我希望有一个使用信息模式的解决方案,因为,(a)我已经在这个应用程序的其他地方使用了信息模式,我希望保持一致;(b)我从未使用过sys目录表,我只是不想进入其中。但有效的东西总是比无效的东西更可取,所以我想我会接受你的解决方案。如果有其他人出现并且知道如何使用信息模式,请发布!我怀疑我是否会切换回sys cat解决方案,但询问者想知道。@Jay See了解更多信息。是的,我想我已经弄明白了。嗯,我怀疑我是否会重做现有的工作代码,我想下一次我只会使用SQL Server特定的对象。我有一个愚蠢的想法,那就是最好使用信息模式,因为这应该是一个行业标准。