开发者

How to get column metadata from a table synonym

开发者 https://www.devze.com 2023-01-29 01:36 出处:网络
How can I determine column metadata from a table synonym in a SQL Server 2005 database?I have a synonym called \'ProjectSyn\' for a table called \'Project\', but I can find no column met开发者_C百科ad

How can I determine column metadata from a table synonym in a SQL Server 2005 database? I have a synonym called 'ProjectSyn' for a table called 'Project', but I can find no column met开发者_C百科adata for the synonym.

My guess is to somewhere determine the 'base table' for the synonym, then query for column metadata for that table. Is this a correct approach, and if not, what would be?


This is my solution which works with synonyms of different databases:

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


Something like this? (edited)

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'


Yes, I think getting the base object and then retrieve the columns, is your only option.

To get the base object name for a synonym, just query the view sys.synonyms

0

精彩评论

暂无评论...
验证码 换一张
取 消