SQL Server: ricerca di tabelle e viste che utilizzano una determinata colonna

Nella vita dei database, soprattutto quelli gestionali, può accadere che si decida di mettere mano alla struttura di una tabella eliminando o rinominando una colonna in una tabella.

In questo caso possono tornare i seguenti comandi che eseguono una query per determinare quali Tabelle e Viste contengono una determinata colonna.

Ricerca nelle Tabelle per colonna specifica:

USE DBName
GO
SELECT sys.tables.name AS TableName,
SCHEMA_NAME(schema_id) AS SchemaName
FROM sys.tables
INNER JOIN sys.columns ON sys.tables.OBJECT_ID = sys.columns.OBJECT_ID
WHERE sys.columns.name = ’ColumnName
ORDER BY SchemaName, TableName;

Ricerca nelle Viste per colonna specifica:

USE DBName
GO
SELECT sys.views.name AS ViewName,
SCHEMA_NAME(schema_id) AS SchemaName
FROM sys.views
INNER JOIN sys.columns ON sys.views.OBJECT_ID = sys.columns.OBJECT_ID
WHERE sys.columns.name = ’ColumnName
ORDER BY SchemaName, ViewName;

Volendo rendere più duttile la ricerca è anche possibile ricercare Tabelle o Viste che contengono colonne il cui nome contiene una determinata parola.

Ricerca nelle Tabelle per colonne con nome contenente una specifica parola:

USE DBName
GO
SELECT sys.tables.name AS TableName,
SCHEMA_NAME(schema_id) AS SchemaName,
sys.columns.name AS ColumnName
FROM sys.tables
INNER JOIN sys.columns ON sys.tables.OBJECT_ID = sys.columns.OBJECT_ID
WHERE sys.columns.name LIKE ‘%Word%’
ORDER BY SchemaName, TableName;

Ricerca nelle Viste per colonne con nome contenente una specifica parola:

USE DBName
GO
SELECT sys.views.name AS ViewName,
SCHEMA_NAME(schema_id) AS SchemaName,
sys.columns.name AS ColumnName
FROM sys.views
INNER JOIN sys.columns ON sys.views.OBJECT_ID = sys.columns.OBJECT_ID
WHERE sys.columns.name LIKE ‘%Word%’
ORDER BY SchemaName, ViewName;