2010-12-07 3 views
4

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

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

+0

Что такое синоним? – Aliostad 2010-12-07 12:49:44

+0

@Aliostad - альтернативное имя для объекта базы данных. Полезно для переименования объектов без нарушения устаревшего кода (по крайней мере теоретически - иногда абстракция не работает, как в этом вопросе). Синтаксис: `CREATE SYNONYM ProjectSyn FOR Project` – 2010-12-07 13:00:58

+0

Спасибо. Никогда не использовал его. – Aliostad 2010-12-07 13:03:21

ответ

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' 
1

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

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

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 
Смежные вопросы