Как получить метаданные столбца из таблицы синоним
-
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
Не связан с StackOverflow