0

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

实际上,我需要检索一些已存储在数据库中的扫描文档。我找到了一个名为“ScannedDocument”的表,它确实有一个varbinary名为“SCD_DOCIMAGE”的列。但是,当我运行以下命令时:

Select * from ScannedDocument

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

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

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

4

3 回答 3

4

查看 INFORMATION_SCHEMA.COLUMNS

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

要下载或保存到磁盘,这可能有助于 脚本将 varbinary 数据保存到磁盘

于 2017-04-11T13:19:00.140 回答
1

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

于 2017-04-11T13:22:15.653 回答
0

Aaron Bertrand 在博客中提到了 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';
于 2017-04-11T14:54:59.430 回答