IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Stocker des fichiers dans une colonne de type IMAGE


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Points : 13
    Points
    13
    Par défaut Stocker des fichiers dans une colonne de type IMAGE
    Bonjour à tous,

    Après avoir parcouru quelques posts sur le sujet, il semblerait que le débat fait rage entre le choix de stocker ou non des fichiers (données binaires) au sein même de la base de données.

    Pour ma part, il s'agit d'une application Web de facturation, développée en C# .NET 2.0 qui communique avec une base de données SQL Server 2000 SP4. Et il est désormais nécessaire de réaliser une nouvelle fonctionnalité permettant d'associer des pièces jointes aux factures saisies (images, PDF, DOC, XLS, etc...)

    J'avais donc pensé à créer une table avec 4 colonnes :
    - Identifiant unique de la facture (VARCHAR(35))
    - Nom du fichier (VARCHAR(50))
    - Date de mise à disposition (DATETIME)
    - Données du fichier (IMAGE)
    La clé primaire serait composée des 2 premières colonnes.
    Petite question annexe : Dans ce cas, est-il préférable de créer un nouveau groupe de fichiers et/ou un nouveau fichier MDF ?
    J'ai lu qu'il était conseillé de ne pas utiliser le type de données IMAGE qui est amené à disparaître mais, sauf erreur, je n'ai pas d'autre choix car le type de données VARBINARY(MAX) n'a été introduit qu'à partir de SQL SERVER 2005...

    Voici pour moi les avantages du stockage des fichiers dans la base de données :
    - Uniformité de la solution (relation forte entre une facture et ses pièces jointes : impossible de supprimer une facture et pas le fichier associé)
    - La sauvegarde de la base contient également les fichiers
    - Maintenance meilleure et moins compliquée (pas d'espace disque dédié à gérer)
    Et les inconvénients :
    - Taille de la base
    - Performances ?

    Qu'en pensez-vous ? Quelle feriez vous à ma place ?

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    A lire :
    http://sqlpro.developpez.com/cours/stockerimages/

    De plus à partir de SQL Server 2008 on à le FILESTREAM qui correspond au DATALINK de la norme SQL.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    Cependant, pourrais-tu stp apporter une réponse moins générique aux questions posées ?
    - Type de données IMAGE en SQL2000 ?
    Il n'y a que cela en interne à la base, sinon externaliser les fichiers. Mais manipulation complexe et pauvre à l'aide de WRITETEXT, READTEXT et UPDATETEXT via des pointeurs

    - Nouveau groupe de fichiers / nouveau fichier MDF ?
    C'est préférable !

    - Ton avis personnel ?
    Il est idiot de miser sur une version obsolète de SQL Server pour une nouvelle fonctionnalité considérée depuis la V 2005 comme deprecated (type IMAGE)? De plus SQL 2000 n'a plus de support et risque de ne plus fonctionner dans les futurs OS (aucune garantie).

    Donc passer à la version 2008 et utiliser du FILESTREAM.

    A +

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 26
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup pour ces réponses !!!

    Pour information, ce n'est pas une idiotie mais une obligation de rester sous SQL 2000 : L'application fonctionne actuellement avec un serveur SQL 2000 (qui contient beaucoup d'autres bases de données pour d'autres applications) et la migration vers SQL 2008 n'est pas du tout prévue pour l'instant car cela impliquerait de refaire une campagne complète de tests...

    Conclusion : C'est parti pour l'utilisation du type de données IMAGE dont les données seront stockées dans un nouveau fichier MDF !

    @+

Discussions similaires

  1. Réponses: 7
    Dernier message: 14/02/2011, 00h53
  2. [Liferay] stocker un fichier dans une colonne d'une table
    Par lamis2009 dans le forum Portails
    Réponses: 1
    Dernier message: 01/07/2010, 16h33
  3. stocker des fichiers dans une base de donnée MYSQL
    Par Invité(e) dans le forum MySQL
    Réponses: 5
    Dernier message: 03/12/2009, 13h10
  4. [Débutante]Stocker des fichiers dans une BD
    Par bouba83 dans le forum Access
    Réponses: 5
    Dernier message: 19/05/2006, 08h41
  5. Ecrire les noms des fichiers dans une colonne
    Par REGIMBAL dans le forum Access
    Réponses: 1
    Dernier message: 20/04/2006, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo