寻找扫描所有SQL Server数据库中所有表的脚本,并列出大对象列(TEXT,NTEXT,IMAGE VARCHAR(MAX),NVARCHAR(MAX),FILESTREAM,XML,VARBINARY)。
虽然我可能自己编写代码,但我想要一个现成的脚本。
答案 0 :(得分:12)
select * from information_schema.columns where data_type in
('TEXT', 'NTEXT','IMAGE' ,'XML', 'VARBINARY')
or
(data_type = 'VARCHAR' and character_maximum_length = -1)
OR
(data_type = 'NVARCHAR' and character_maximum_length = -1)
更新从IN删除了FILESTREAM,因为data_type是已捕获的VARBINARY
答案 1 :(得分:3)
试试这个
select * from information_schema.columns
where DATA_TYPE in('text','ntext','xml','image')
or (DATA_TYPE in('varchar','nvarchar','varbinary')
and CHARACTER_MAXIMUM_LENGTH = -1)
order by DATA_TYPE
filestream存储为varbinary(max)
这只会捕获varbinary(max),而不是varbinary(20),如果你也想要那个,然后将varbinary移动到第一个条件,就像这样
select * from information_schema.columns
where DATA_TYPE in('text','ntext','xml','image','varbinary')
or (DATA_TYPE in('varchar','nvarchar')
and CHARACTER_MAXIMUM_LENGTH = -1)
order by DATA_TYPE