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;