如何从表同义词中获取列元数据

时间:2010-12-07 12:41:15

标签: sql sql-server synonym

如何从SQL Server 2005数据库中的表synonym确定列元数据?对于名为“Project”的表,我有一个名为“ProjectSyn”的同义词,但我找不到同义词的列元数据。

我的猜测是某处确定同义词的“基表”,然后查询该表的列元数据。这是一种正确的方法,如果没有,会是什么?

3 个答案:

答案 0 :(得分:3)

这是我的解决方案,它适用于不同数据库的同义词:

SELECT TOP 0 * INTO #TEMP1 FROM YourTable 
SELECT
    [column_name] = c.name,
    [data_type] = t.name,
    [character_maximum_length] = c.max_length
FROM tempdb.sys.columns c
inner join tempdb.sys.types t on t.system_type_id = c.system_type_id
WHERE [object_id] = object_id('tempdb..#TEMP1');
DROP TABLE #TEMP1

答案 1 :(得分:1)

是的,我认为获取基础对象然后检索列是唯一的选择。

要获取同义词的基础对象名称,只需查询视图sys.synonyms

答案 2 :(得分:1)

这样的东西? (编辑)的

select c.*
from
   sys.columns c
   inner join sys.synonyms s on c.object_id = object_id(s.base_object_name)
where
   s.name = 'ProjectSyn'