none
SQL Server 2008 + FileStream: SSMS non riesce a gestire l'attributo "filestream".. RRS feed

  • Discussione generale

  • Ciao a tutti, tempo fa avevo postato un problema legato a come SSMS gestisce l'attributo filestream su un campo varchar(MAX).  Bene, riassumo in breve il problema e un modo (a mio avviso "idiota" ma funzionante) per risolverlo.

    Data una tabella con una struttura di questo genere

    	[ROWGUID] [uniqueidentifier] ROWGUIDCOL NOT NULL,
    	[GUIDGERARCHIA] [uniqueidentifier] NULL,
    	[GUIDFASE] [uniqueidentifier] NULL,
    	[GUIDOPERATORE] [uniqueidentifier] NULL,
    	[TITOLO] [nvarchar](255) NOT NULL,
    	[DESCRIZIONE] [nvarchar](255) NULL,
    	[ESTENSIONE] [nvarchar](50) NULL,
    	[DATA] [datetime] NULL,
    	[FILEARCHIVIO] [varbinary](max) FILESTREAM NULL,
    

     la colonna FILEARCHIVIO contiene il famoso attributo FILESTREAM con cui si possono gestire i file da SQL.  Una volta fatto partire il sistema, tutto funziona alla meraviglia fino a quando, improvvisamente, l'attributo FILESTREAM non è più associato alla colonne FILEARCHIVIO.  Fin'ora, ho riscontrato questa anomalia nei seguenti casi:

    1. Se vengono effettuate delle modifiche alle relazioni che interessano questa tabella;

    2. Se viene "spostato" il campo FILESTREAM di posizione (es. se viene messo prima di "DATA".

    Girovagando in internet, casi di questo genere se ne trovano a pacchi e tutti suggeriscono la stessa causa: un baco di ssms che non è in grado di gestire questo "fantomatico" attributo.  Appurato che il problema c'è e che, prima o poi, ci cascheremo la domanda è: come lo risolvo?  La prima cosa che mi è venuta in mente è stata: "faccio un alter table ed aggiungo l'attributo mancante", peccato che all'esecuzione del comando si riceva un fastidiosissimo errore che interrompe l'esecuzione.  L'errore in questione è:

    Cannot alter column 'FILEARCHIVIO' in table 'DOCUMENTI' to add or remove the FILESTREAM column attribute.

    Ho provato in tutti i modi, ma con i dati dentro la tabella, la query di aggiornamento sembra non funzionare.  Per risolvere il problema ho fatto così:  ho creato un campo aggiuntivo alla tabella con l'attributo FILESTREAM (tramite "ALTER TABLE ADD"), ho spostato tutti i dati del vecchio campio FILESTREAM in quello nuovo (UPDATE DOCUMENTI SET FILEARCHIVIONEW = FILEARCHIVIO), cancellato il vecchio campo e rinominato il nuovo con il nome di quello vecchio.

    Dopo tutto sto casino, la gestione del filestream è tornata a funzionare...  Non so se essere felice o deluso!

    Spero possa essere di aiuto a qualcuno

    Ciao Enrico

     

    martedì 21 dicembre 2010 16:35