Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment trouver tous les noms de colonne d'un synonyme

IMHO vous ne devriez pas utiliser INFORMATION_SCHEMA pour tout cela . Ce qui suit fonctionnera pour une table ou une vue :

SELECT UPPER(name)
  FROM sys.columns
  WHERE OBJECT_NAME([object_id]) = N'mutable';

Ce qui suit fonctionnera pour un synonyme (une exigence que vous avez modifiée ultérieurement) :

SELECT UPPER(name) 
  FROM sys.columns AS c
  CROSS APPLY
  (
    SELECT name
    FROM sys.synonyms 
    WHERE name = N'mutable'
    AND OBJECT_ID([base_object_name]) = c.[object_id]
  ) AS x;
  

Vous pouvez également simplement dire :

DECLARE @obj INT;

SELECT @obj = OBJECT_ID([base_object_name]) 
  FROM sys.synonyms WHERE name = N'mutable';

SELECT UPPER(name) FROM sys.columns WHERE [object_id] = @obj;