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

Trouver le vrai nom de colonne d'un alias utilisé dans une vue ?

Compte tenu de cette vue :

CREATE VIEW viewTest
AS
SELECT
    books.id,
    books.author,
    Books.title AS Name
FROM
    Books

Ce que je peux voir, vous pouvez obtenir les colonnes utilisées et les tables utilisées en procédant comme suit :

SELECT * 
FROM INFORMATION_SCHEMA.VIEW_COLUMN_USAGE AS UsedColumns 
WHERE UsedColumns.VIEW_NAME='viewTest'

SELECT * 
FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE AS UsedTables 
WHERE UsedTables.VIEW_NAME='viewTest'

Ceci est pour le serveur sql 2005+. Voir référence ici

Modifier

Donnez la même vue. Essayez cette requête :

SELECT
    c.name AS columnName,
    columnTypes.name as dataType,
    aliases.name as alias
FROM 
sys.views v 
JOIN sys.sql_dependencies d 
    ON d.object_id = v.object_id
JOIN .sys.objects t 
    ON t.object_id = d.referenced_major_id
JOIN sys.columns c 
    ON c.object_id = d.referenced_major_id 
JOIN sys.types AS columnTypes 
    ON c.user_type_id=columnTypes.user_type_id
    AND c.column_id = d.referenced_minor_id
JOIN sys.columns AS aliases
    on c.column_id=aliases.column_id
    AND aliases.object_id = object_id('viewTest')
WHERE
    v.name = 'viewTest';

Il me renvoie ceci :

columnName  dataType  alias

id          int       id
author      varchar   author
title       varchar   Name

Ceci est également testé dans sql 2005+