¿Cómo puedo encontrar todas las columnas de un determinado tipo (por ejemplo NTEXT) en todas las tablas de una base de datos de SQL Server?
Estoy buscando una consulta SQL.
sql
sql-server-2008
SwissCoder
fuente
fuente

alter table [tablename] alter column [columnname] nvarchar(max). Puede usarLEN(..)etc. con nvarchar y no ntext.INNER JOIN INFORMATION_SCHEMA.TABLES t ON c.TABLE_NAME = t.TABLE_NAME AND t.TABLE_TYPE = 'BASE TABLE'Vas a necesitar INFORMATION_SCHEMA. Prueba algo como:
SELECT c.* from INFORMATION_SCHEMA.columns c INNER JOIN INFORMATION_SCHEMA.tables t ON t.table_name = c.table_name WHERE c.data_type = 'int' AND t.table_type = 'base table'fuente
También puedes probar
SELECT OBJECT_NAME(c.OBJECT_ID) TableName, c.name ColumnName FROM sys.columns AS c JOIN sys.types AS t ON c.user_type_id=t.user_type_id WHERE t.name = 'ntext' ORDER BY c.OBJECT_ID; GOfuente
Puede utilizar la vista del sistema
INFORMATION_SCHEMA.COLUMNS. Ladata_typecolumna tiene lo que estás buscando.fuente
Usé la siguiente declaración para encontrar todas las tablas que posiblemente podrían contener datos / archivos binarios.
SELECT table_name FROM INFORMATION_SCHEMA.TABLES T WHERE T.TABLE_CATALOG = 'MyDatabase' AND EXISTS ( SELECT * FROM INFORMATION_SCHEMA.COLUMNS C WHERE C.TABLE_CATALOG = T.TABLE_CATALOG AND C.TABLE_SCHEMA = T.TABLE_SCHEMA AND C.TABLE_NAME = T.TABLE_NAME AND ( C.DATA_TYPE = 'binary' OR C.DATA_TYPE = 'varbinary' OR C.DATA_TYPE = 'text' OR C.DATA_TYPE = 'ntext' OR C.DATA_TYPE = 'image' ) )fuente