2017-04-11 2 views
0

J'ai une base de données en cours d'exécution sur SQL Server 2012 et j'ai besoin de localiser les tables qui ont le type de colonne varbinary en eux.Quelle est la syntaxe T-SQL pour trouver des tables dans ma base de données SQL Server qui a un type de colonne VARBINARY?

En fait, j'ai besoin de récupérer certains documents numérisés qui ont été stockés dans la base de données. J'ai trouvé une table appelée 'ScannedDocument' et elle a une colonne varbinary, appelée 'SCD_DOCIMAGE'. Cependant, lorsque je cours ce qui suit:

Select * from ScannedDocument 

, je n'obtiens aucun résultat dans la fenêtre de sortie dans SSMS. Ma première estimation est que les documents numérisés que je recherche ne sont pas stockés dans cette table. Quelle serait la syntaxe T-SQL pour localiser toutes les tables avec des colonnes varbinary?

En outre, quelle serait la syntaxe T-SQL pour récupérer les documents de cette colonne une fois que la table correcte a été identifiée?

+0

Maintenant que John vous a montré comment trouver la colonne que vous voulez extraire le document qui se trouve. Ce n'est pas un exploit car varbinary est juste une donnée binaire. Vous avez besoin de quelques détails pour avoir une chance. Vous avez besoin de ce que les données là-bas représentent. Est-ce un pdf? jpg? Peut-être un document Word. –

Répondre

3

Jetez un coup d'oeil à INFORMATION_SCHEMA.COLUMNS

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

Pour télécharger ou Enregistrer sur le disque, cela peut aider Script to save varbinary data to disk

+0

Merci John, exactement ce que je cherchais. Des conseils/suggestions sur ma deuxième question? – user3115933

+0

@ utilisateur3115933 dépend de votre environnement ... peut-être 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

Aaron Bertrand a blogged about some shortcomings in the INFORMATION_SCHEMA objets.

Voici une requête pour identifier les champs varbinary à l'aide des objets système SQL Server:

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';