how to get table's schema name

我的未来我决定 提交于 2019-12-03 14:35:02
gbn

Use OBJECT_SCHEMA_NAME

SELECT 
  OBJECT_SCHEMA_NAME(f.parent_object_id) AS TableNameSchema, -- this
  OBJECT_NAME(f.parent_object_id) AS TableName,
  COL_NAME(fc.parent_object_id,fc.parent_column_id) AS ColumnName,
  OBJECT_SCHEMA_NAME(f.referenced_object_id) AS ReferenceTableNameSchema,
  OBJECT_NAME (f.referenced_object_id) AS ReferenceTableName,
  COL_NAME(fc.referenced_object_id,fc.referenced_column_id) AS ReferenceColumnName,
  f.name AS ForeignKey
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

As per Sql Server 2008:

 SELECT Object_name(f.parent_object_id) 
       AS 
       TableName, 
       Col_name(fc.parent_object_id, fc.parent_column_id) 
       AS ColumnName, 
       Object_name (f.referenced_object_id) 
       AS ReferenceTableName, 
       Col_name(fc.referenced_object_id, fc.referenced_column_id) 
       AS 
       ReferenceColumnName, 
       f.name 
       AS ForeignKey, 
       Quotename(Schema_name(f.schema_id)) + '.' + Quotename( 
       Object_name(f.parent_object_id)) AS 
       schemaname, 
       Quotename(Schema_name(o.schema_id)) + '.' + Quotename( 
       Object_name(f.referenced_object_id)) 
                                        AS ReferenceSchemaName 
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 

If to want to know schema name on basis of object_id then use OBJECT_SCHEMA_NAME(), if you want to get schema name on basis of schema_id then use SCHEMA_NAME().

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!