none
Salvare files nel db RRS feed

  • Domanda

  • Ciao

    Ho la necessità di salvare files nel db.

    Attualmente trasformo il file in formato binario e lo inserisco in un campo (elaborazione effettuata dall'app).

    Così facendo il db cresce notevolmente.

    Ci sono altre soluzioni?

    Grazie

    lunedì 18 dicembre 2017 16:15

Risposte

  • Ciao,

    Sì, li integra, dipende però da che esigenze hai. Inoltre, il non accesso alla rete dipende anche da dove si trova il tuo database. In ogni caso, nel caso volessi utilizzare i FileTable che si appoggiano su FILESTREAM, dovrai prima abilitare quest'ultimo e poi creare un FileTable dove andrai a salvare i tuoi file. L'interazione tra relazionale e FileTable la puoi realizzare creando nel primo una colonna in cui salverai il nome del file che potrai utilizzare per andarlo a prelevare dalla tua FileTable (l'univocità del nome è garantita dalla gestione fissa delle chiavi primarie al suo interno).

    Gabriele

    • Contrassegnato come risposta Cracken66 lunedì 25 dicembre 2017 08:33
    martedì 19 dicembre 2017 11:35
  • Ciao,

    L'attributo FILESTREAM è stato introdotto nella versione 2008 di SQL Server. FILESTREAM rappresenta il punto di contatto tra il "mondo" del file system e il "mondo" del database, concilia i vantaggi delle due tecnologie con una struttura dati gestita da SQL Server, ma appoggiata sul file system.

    Tuttavia, un limite evidente del supporto FILESTREAM è rappresentato dal fatto che le applicazioni tradizionali, che non sanno nulla di SQL Server, non possono accedervi. L'accesso al supporto FILESTREAM, su SQL Server 2008, doveva essere eseguito utilizzando il linguaggio T-SQL oppure tramite speciali API .NET Win32. Molti clienti hanno quindi chiesto il potenziamento di questa tecnologia e l'implementazione del tradizionale accesso ai file, come avviene nelle applicazioni Office o con Esplora Risorse di Windows, mantenendo però i vantaggi del supporto FILESTREAM, ovvero la possibilità di includere, nel backup del DB, i file memorizzati nelle colonne VARBINARY(MAX) con attributo FILESTREAM e di poter eseguire ricerche con il servizio full-text search.

    FileTable permette ad una applicazione d'integrare la memorizzazione dei propri file all'interno di SQL Server, dove sarà possibile eseguire ricerche full-text e semantiche, anche su dati e metadati non strutturati. In altre parole sarà possibile memorizzare file e documenti in speciali tabelle di SQL Server chiamate FileTables; le applicazioni Windows potranno accedere a tali file come se fossero memorizzati (solo) nel file system senza implementare alcuna modifica.

    Come ha già evidenziato Gabriele, la caratteristica FileTable è basata sulla tecnologia FILESTREAM; una FileTable è una tabella speciale, con uno schema fisso, creata dall'utente e utilizzata per la memorizzazione di dati FILESTREAM (documenti, file o cartelle).. per maggiori dettagli su FileTable, dai un'occhiata a questo articolo.

    Detto questo l'utilizzo di FileTable (e quindi implicitamente di FILESTREAM) è consigliato per file di dimensioni maggiori di 1 MB. FileTable è suggerito quando il salvataggio del file deve essere "in transazione" con altre operazioni di modifica dei dati.

    Una alternativa, come suggerisce Gabriele, sono i Blob Storage in Azure.. dipende dalle tue esigenze.

    HTH


    Sergio Govoni

    Microsoft Data Platform MVP | MVP Profile | English Blog | Twitter | LinkedIn


    sabato 23 dicembre 2017 18:36
    Moderatore

Tutte le risposte

  • Ciao,

    Esistono altre soluzioni e nel tuo caso può farti comodo il BLOB Storage su Azure. Grazie ad esso avrai la possibilità di salvare dati non strutturati come file di testo, audio, video, etc. senza dover più rifarti a SQL Server (che da come avrai intuito non è nato per queste esigenze).

    A presto,

    Gabriele

    martedì 19 dicembre 2017 10:46
  • Sql Server integra però filestream e filetable che non richiedono l'accesso alla rete.

    Ciao e grazie

    martedì 19 dicembre 2017 11:13
  • Ciao,

    Sì, li integra, dipende però da che esigenze hai. Inoltre, il non accesso alla rete dipende anche da dove si trova il tuo database. In ogni caso, nel caso volessi utilizzare i FileTable che si appoggiano su FILESTREAM, dovrai prima abilitare quest'ultimo e poi creare un FileTable dove andrai a salvare i tuoi file. L'interazione tra relazionale e FileTable la puoi realizzare creando nel primo una colonna in cui salverai il nome del file che potrai utilizzare per andarlo a prelevare dalla tua FileTable (l'univocità del nome è garantita dalla gestione fissa delle chiavi primarie al suo interno).

    Gabriele

    • Contrassegnato come risposta Cracken66 lunedì 25 dicembre 2017 08:33
    martedì 19 dicembre 2017 11:35
  • é preferibile usare filestream o filetable?

    Grazie

    martedì 19 dicembre 2017 14:40
  • FileTable si basa su FileStream, quest'ultimo di per se non è utilizzabile direttamente.

    Gabriele

    martedì 19 dicembre 2017 15:27
  • Ho trovato questo: Filestream

    Grazie

    martedì 19 dicembre 2017 16:33
  • Te lo avevo linkato due risposte fa. :-)

    A presto,

    Gabriele

    martedì 19 dicembre 2017 16:34
  • Tu mi avevi linkato filetable. Io, invece, ti ho linkato flestream in cui si dice come creare tabelle per archiviare dati filestream.

    In sostanza indica 2 vie per archiviare file.

    Grazie

     
    martedì 19 dicembre 2017 18:33
  • Ciao a tutti,

    aggiungo un paio di link che potrebbero essere utili:

    Ciao!


    Sergio Govoni

    Microsoft Data Platform MVP | MVP Profile | English Blog | Twitter | LinkedIn

    giovedì 21 dicembre 2017 22:23
    Moderatore
  • Quale soluzione sarebbe da preferire o meglio quando usare l'una rispetto all'altra?

    Grazie

    venerdì 22 dicembre 2017 17:12
  • Ciao,

    L'attributo FILESTREAM è stato introdotto nella versione 2008 di SQL Server. FILESTREAM rappresenta il punto di contatto tra il "mondo" del file system e il "mondo" del database, concilia i vantaggi delle due tecnologie con una struttura dati gestita da SQL Server, ma appoggiata sul file system.

    Tuttavia, un limite evidente del supporto FILESTREAM è rappresentato dal fatto che le applicazioni tradizionali, che non sanno nulla di SQL Server, non possono accedervi. L'accesso al supporto FILESTREAM, su SQL Server 2008, doveva essere eseguito utilizzando il linguaggio T-SQL oppure tramite speciali API .NET Win32. Molti clienti hanno quindi chiesto il potenziamento di questa tecnologia e l'implementazione del tradizionale accesso ai file, come avviene nelle applicazioni Office o con Esplora Risorse di Windows, mantenendo però i vantaggi del supporto FILESTREAM, ovvero la possibilità di includere, nel backup del DB, i file memorizzati nelle colonne VARBINARY(MAX) con attributo FILESTREAM e di poter eseguire ricerche con il servizio full-text search.

    FileTable permette ad una applicazione d'integrare la memorizzazione dei propri file all'interno di SQL Server, dove sarà possibile eseguire ricerche full-text e semantiche, anche su dati e metadati non strutturati. In altre parole sarà possibile memorizzare file e documenti in speciali tabelle di SQL Server chiamate FileTables; le applicazioni Windows potranno accedere a tali file come se fossero memorizzati (solo) nel file system senza implementare alcuna modifica.

    Come ha già evidenziato Gabriele, la caratteristica FileTable è basata sulla tecnologia FILESTREAM; una FileTable è una tabella speciale, con uno schema fisso, creata dall'utente e utilizzata per la memorizzazione di dati FILESTREAM (documenti, file o cartelle).. per maggiori dettagli su FileTable, dai un'occhiata a questo articolo.

    Detto questo l'utilizzo di FileTable (e quindi implicitamente di FILESTREAM) è consigliato per file di dimensioni maggiori di 1 MB. FileTable è suggerito quando il salvataggio del file deve essere "in transazione" con altre operazioni di modifica dei dati.

    Una alternativa, come suggerisce Gabriele, sono i Blob Storage in Azure.. dipende dalle tue esigenze.

    HTH


    Sergio Govoni

    Microsoft Data Platform MVP | MVP Profile | English Blog | Twitter | LinkedIn


    sabato 23 dicembre 2017 18:36
    Moderatore
  • Grazie e Buon Natale.
    lunedì 25 dicembre 2017 08:33
  • Buon Natale! :)

    Ciao


    Sergio Govoni

    Microsoft Data Platform MVP | MVP Profile | English Blog | Twitter | LinkedIn


    lunedì 25 dicembre 2017 20:19
    Moderatore