Je dois prolonger une application .NET existante pour stocker des images et des documents (principalement des PDF) dans une base de données SQL Server 2005. p>
Quel type de données SQL Server est mieux utilisé pour enregistrer ces fichiers et qu'il est significatif de créer une table séparée qui détient les champs, ou n'est-ce pas un problème de mettre ces champs directement dans les tables d'entreprise "normales", aussi longtemps que la Sélectionner des instructions ne les sélectionne pas (ou sélectionnez *). P>
4 Réponses :
SQL Server 2005: Blob Strike> Varchar (Max)
SQL Server 2008: filtream p>
"Goutte"? Ce n'est pas vraiment un type de données. "Vieux" types texte code>, ntext code> et image code> sont obsolètes, la réponse correcte pour 2005 devrait être (comme d'autres personnes correctement indiquées) varchar (max) code>.
varchar? varbinary, sûrement?
Utilisez Varbinary (Max) pour stocker des images et des documents sur SQL Server. Je recommanderais de les avoir dans une table séparée et non la table principale par elle-même. P>
varbinaire ou filtream p>
Nul besoin de les stocker dans une table séparée - il y a des commandes intégrées que vous pouvez utiliser pour la forcer à être stockée dans / hors ligne à l'aide de sp_tableOption: P>
http://msdn.microsoft.com/en-us/library/ MS189087.aspx P>
http://msdn.microsoft.com/en-us/library/ MS186981.aspx P>
http: // www. Microsoft.com/sqlserver/2008/fr/us/wp-sql-2008-Manage-unstructured.aspx P>
(Notez qu'il pourrait y avoir des avantages pour stocker dans une table séparée si vous utilisez des groupes de fichiers différents et les sauvegardez de manière indépendante ou quelque chose comme ça - mais cela pourrait être considéré comme exceptionnel) P>
Filtream n'est pas disponible avant que SQL Server 2008
Pour répondre à l'autre partie de votre question, si vous stockez des données binaires dans une base de données, ne mélangez pas les données dans une table avec d'autres champs. Vous ne ferez probablement aucune recherche ou indexation sur les données binaires et l'accès à toutes les métadonnées sera ralentie par la taille de la table. Gardez simplement les images / fichiers dans une table séparée. p>
Bien que je puisse penser à de bonnes raisons de conserver des fichiers dans une base de données SQL Server (par exemple: pas une application Web), ce que @jonh dit également: gardez-les dans le système de fichiers à moins que vous n'ayez une raison convaincante. p>