Как получить метаданные столбца из синонима таблицы - PullRequest
4 голосов
/ 07 декабря 2010

Как определить метаданные столбца из таблицы синоним в базе данных SQL Server 2005? У меня есть синоним ProjectSyn для таблицы Project, но я не могу найти метаданные столбца для синонима.

Я предполагаю где-то определить «базовую таблицу» для синонима, а затем запросить метаданные столбца для этой таблицы. Это правильный подход, и если нет, то что будет?

Ответы [ 3 ]

3 голосов
/ 25 ноября 2014

Это мое решение, которое работает с синонимами разных баз данных:

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 голос
/ 07 декабря 2010

Как то так?(отредактировано)

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'
1 голос
/ 07 декабря 2010

Да, я думаю, что получение базового объекта, а затем извлечение столбцов - ваш единственный вариант.

Чтобы получить имя базового объекта для синонима, просто запросите представление sys.synonyms

...