Làm cách nào để tôi có thể tìm thấy tất cả các cột thuộc một loại nhất định (ví dụ NTEXT
) trong tất cả các bảng trong cơ sở dữ liệu SQL Server?
Tôi đang tìm một truy vấn SQL.
Làm cách nào để tôi có thể tìm thấy tất cả các cột thuộc một loại nhất định (ví dụ NTEXT
) trong tất cả các bảng trong cơ sở dữ liệu SQL Server?
Tôi đang tìm một truy vấn SQL.
Câu trả lời:
Bạn có thể sử dụng truy vấn sau để trả về các trường
SELECT table_name [Table Name], column_name [Column Name]
FROM information_schema.columns where data_type = 'NTEXT'
alter table [tablename] alter column [columnname] nvarchar(max)
. Bạn có thể sử dụng LEN(..)
vv với nvarchar chứ không phải ntext.
INNER JOIN INFORMATION_SCHEMA.TABLES t ON c.TABLE_NAME = t.TABLE_NAME AND t.TABLE_TYPE = 'BASE TABLE'
Tôi đã sử dụng Tuyên bố sau để tìm tất cả các bảng có thể chứa dữ liệu / tệp nhị phân.
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' )
)