Domanda

Come è possibile determinare colonna di metadati da una tabella sinonimo in un database SQL Server 2005? Ho un sinonimo chiamata 'ProjectSyn' per una tabella denominata 'Project', ma non riesco a trovare i metadati colonna per il sinonimo.

La mia ipotesi è quello di determinare da qualche parte la 'tabella di base' per il sinonimo, quindi query per colonna di metadati per quella tabella. È questo un approccio corretto, e se no, quale sarebbe?

È stato utile?

Soluzione

qualcosa di simile? (A cura)

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'

Altri suggerimenti

Questa è la mia soluzione che funziona con sinonimi diversi database:

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ì, penso di ottenere l'oggetto di base e quindi recuperare le colonne, è l'unica opzione.

Per ottenere il nome dell'oggetto base per un sinonimo, basta interrogare la vista sys.synonyms

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top