2017-04-11 55 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'; 
相關問題