Il mio problema è questo: ho il potenziale per l'archiviazione di file enormi in un campo binario (immagine) su SQL Server 2008 (> 1 GB).Come seleziono solo una porzione di enorme binario (file)?
Se restituisco l'intero binario utilizzando un'istruzione di selezione regolare, la query impiega più di un minuto per restituire i risultati al mio programma .NET e le mie app client scadono. Quello che sto cercando è il codice TSQL che limiterà la dimensione dei dati restituiti (forse 300mb), permettendomi di scorrere i restanti blocchi e prevenire i timeout.
Questo deve accadere nella query SQL, non nell'elaborazione dopo che i dati sono stati restituiti.
Ho provato SubString, che MS dice funziona con dati binari, ma tutto quello che ottengo è 8000 byte al massimo. L'ultima cosa che ho provato è stata questa:
select substring(Package,0,300000000) 'package', ID from rplPackage where ID=0
--where package is the huge binary stored in a image field
Data Streaming non è davvero un'opzione, a causa delle app client.
Qualche idea?
Si dovrebbe reecaluate, se memorizzare i file come base di dati BLOB si adatta davvero alle vostre esigenze: Potrebbe essere solo meglio stroe i file come file e memorizzare solo il loro percorso e metadati nel DB . Una regola empirica è: se il DB non "capisce" il ** contenuto ** del file, considera di spostarlo. –
@EugenRieck Andiamo, dall'argomento capito non dovrebbe esserci nemmeno un tipo di dati binari. – Paparazzi
Ci sono alcuni casi d'uso (Think FS's shared FS), ma l'OQ mostra abbastanza chiaramente che un BLOB non è una soluzione perfetta qui –