在具有 VARBINARY 列类型的 SQL 服务器数据库中查找 table/s 的 T-SQL 语法是什么?

What is the T-SQL syntax for finding table/s in my SQL Server database which has a VARBINARY column type?

我在 SQL Server 2012 上有一个数据库 运行ning,我需要找到其中具有 varbinary 列类型的 tables。

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

Select * from ScannedDocument

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

我的第一个猜测是,我要查找的扫描文档并未存储在此table中。使用 varbinary 列定位所有 table 的 T-SQL 语法是什么?

此外,一旦识别出正确的 table,从该列检索文档的 T-SQL 语法是什么?

看看INFORMATION_SCHEMA.COLUMNS

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

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

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

Aaron Bertrand 有 blogged about some shortcomings in the INFORMATION_SCHEMA 个对象。

这是使用 SQL 服务器系统对象识别 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';