2017-04-11 53 views
0

我有一个在SQL Server 2012上运行的数据库,我需要找到其中有varbinary列类型的表。查找具有VARBINARY列类型的SQL Server数据库中的表/ s的T-SQL语法是什么?

事实上,我需要检索一些已存储在数据库中的扫描文档。我找到一个名为'ScannedDocument'的表,它有一个varbinary列,名为'SCD_DOCIMAGE'。但是,当我运行以下内容:

Select * from ScannedDocument 

,我没有在SSMS的输出窗口中得到任何结果。

我的第一个猜测是我查找的扫描文档没有存储在此表中。使用varbinary列查找所有表的T-SQL语法是什么?

此外,一旦正确的表已被识别,什么是T-SQL语法来检索该列中的文档?

+0

现在,约翰已经表明你如何找到你要提取的文件中发现有列。这不是简单的壮举,因为varbinary只是二进制数据。你需要一些细节才能有机会。你需要知道那里的数据。它是PDF吗? JPG?也许是一个文字文件。 –

回答

3

采取偷看INFORMATION_SCHEMA.COLUMNS

Select * From INFORMATION_SCHEMA.COLUMNS where data_type='varbinary' 

下载或保存到磁盘,这可能有助于Script to save varbinary data to disk

+0

谢谢约翰,正是我在找的东西。任何关于我的第二个问题的指针/建议? – user3115933

+0

@ user3115933取决于你的环境...也许http://stackoverflow.com/questions/4056050/script-to-save-varbinary-data-to-disk –

0

SELECT DISTINCT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE data_type='varbinary'

0

阿龙贝特朗有blogged about some shortcomings in the INFORMATION_SCHEMA对象。

这里有一个查询,以确定使用SQL Server系统对象VARBINARY字段:

SELECT OBJECT_SCHEMA_NAME(c.object_id) + '.' + OBJECT_NAME(c.object_id) AS tablename, 
    c.name AS columnname, 
    t.name + '(' + CASE 
         WHEN c.max_length = -1 THEN 
          'MAX' 
         ELSE 
          CONVERT(VARCHAR(10), c.max_length) 
        END + ')' AS columntype 
FROM sys.columns c 
    INNER JOIN sys.types t 
     ON t.system_type_id = c.system_type_id 
WHERE t.name = 'varbinary'; 
相关问题