2010-09-27 47 views
4

尋找腳本以掃描所有SQL Server數據庫中的所有表並列出大對象(TEXT,NTEXT,IMAGE VARCHAR(MAX),NVARCHAR(MAX),FILESTREAM, XML,VARBINARY)。用於查找LOB列的SQL Server腳本

雖然我可能可以自己編碼,但我想要一個現成的腳本。

+1

您的意思是把它作爲標記2008年,因爲文件流是不是在2005年 – 2010-09-27 20:07:01

回答

11
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) 

更新刪除自DATA_TYPE從IN FILESTREAM是已經被捕獲

+0

感謝這家今天救了我大量的時間。 – 2015-11-12 19:38:43

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(最大值)

這將VARBINARY僅捕獲varbinary(max),而不是varbinary(20),例如,如果您還想要,然後將varbinary移動到th Ë首要條件,這樣

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