Как получить метаданные столбца из таблицы синоним

StackOverflow https://stackoverflow.com/questions/4376667

  •  09-10-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

Что-то вроде этого? (отредактировано)

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'

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top