Pregunta

¿Cómo puedo determinar metadatos de columna de una tabla sinónimo en una base de datos de SQL Server 2005? Tengo un sinónimo llamado 'ProjectSyn' para una tabla llamada 'Proyecto', pero no puedo encontrar ninguna metadatos de columna para el sinónimo.

Mi conjetura es determinar en algún lugar de la 'tabla base' para el sinónimo, a continuación, consulta de metadatos de columna para esa tabla. Es este un enfoque correcto, y si no es así, ¿cuál sería?

¿Fue útil?

Solución

Algo como esto? (Editado)

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'

Otros consejos

Esta es mi solución que trabaja con los sinónimos de diferentes bases de datos:

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

Sí, creo que conseguir el objeto base y luego recuperar las columnas, es su única opción.

Para obtener el nombre del objeto de base para un sinónimo, simplemente consulta la vista sys.synonyms

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top