Как я могу найти все столбцы определенного типа (например NTEXT
) во всех таблицах в базе данных SQL Server?
Я ищу SQL-запрос.
sql
sql-server-2008
SwissCoder
источник
источник
alter table [tablename] alter column [columnname] nvarchar(max)
. Вы можете использоватьLEN(..)
и т. Д. С nvarchar, а не ntext.INNER JOIN INFORMATION_SCHEMA.TABLES t ON c.TABLE_NAME = t.TABLE_NAME AND t.TABLE_TYPE = 'BASE TABLE'
Вам понадобится INFORMATION_SCHEMA. Попробуйте что-нибудь вроде:
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'
источник
Также вы можете попробовать
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; GO
источник
Вы можете использовать системный вид
INFORMATION_SCHEMA.COLUMNS
. Вdata_type
столбце есть то, что вы ищете.источник
Я использовал следующее утверждение, чтобы найти все таблицы, которые могут содержать двоичные данные / файлы.
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' ) )
источник