用于查找LOB列的SQL Server脚本

时间:2010-09-27 19:24:12

标签: sql-server sql-server-2005

寻找扫描所有SQL Server数据库中所有表的脚本,并列出大对象列(TEXT,NTEXT,IMAGE VARCHAR(MAX),NVARCHAR(MAX),FILESTREAM,XML,VARBINARY)。

虽然我可能自己编写代码,但我想要一个现成的脚本。

2 个答案:

答案 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