none
Problema con accesso a filestream RRS feed

  • Discussione generale

  • Ciao,

    dopo aver sbattuto la testa per quasi un mese su questo problema, devo arrendermi all'evidenza che non posso trovare una soluzione in autonomia...

    Un paio di mesi fa abbiamo attivato, su alcune istanze sql del nostro ambiente, filestream. Si parla di Sql Server 2008 R2 su s.o. 2008 R2. Su una sola di queste istanze, per il momento, abbiamo attivato l'autenticazione a livello di utente. Le applicazioni hanno continuato a funzionare regolarmente.

    Abbiamo poi aggiornato un server 2008 R2 (su cui girava quotidianamente una applicazione) a 2012 R2. Da quel momento l'applicazione in oggetto ha smesso di funzionare, o meglio va in errore nel momento in cui deve recuperare un documento dal db server. L'errore è un generico "Access denied". Inizialmente ho pensato che il problema fosse riconducibile alle differenze nel protocollo SMB, e che quindi la cosa potesse derivare semplicemente dalle diverse versioni di sistema operativo. Tant'è che spostando l'operazione pianificata su un altro server (2008 R2) ha ripreso a funzionare regolarmente.

    Ho però deciso di andare a fondo alla cosa. Ho creato una nuova VM 2012 R2 e vi ho fatto girare l'applicazione, aspettandomi lo stesso errore. E invece tutto va a meraviglia.

    Ho analizzato la cosa con ProcMon, sia sul server "problematico" che su quello dove funziona regolarmente. Ho installato, sui due server, gli stessi aggiornamenti di Windows e le stesse applicazioni, e ho lanciato l'applicazione con lo stesso utente amministratore di dominio.

    L'errore sul server è questo:

    11:40:51,4270003 TEST_FILESTREAM.exe 10620 CreateFile \\NOMEDBSERVER\ISTANZA\v1\DOCSERVER\dbo\DMSFile\DOCFS_DF\AE204FBD-B6BC-458B-8868-E9F36A0B2E58\9f0d9eefbf304737a943b8f4aa774ed2 ACCESS DENIED Desired Access: Read Data/List Directory, Read Attributes, Synchronize, Dis"white-space:pre;"> TEST_FILESTREAM.exe 5232 CreateFile \\NOMEDBSERVER\ISTANZA\v1\DOCSERVER\dbo\DMSFile\DOCFS_DF\AE204FBD-B6BC-458B-8868-E9F36A0B2E58\fff7eb752ac746de893ccdb52cfaf0d5 SUCCESS Desired Access: Read Data/List Directory, Read Attributes, Synchronize, Dis"white-space:pre;"> TEST_FILESTREAM.exe 5232 QueryFileInternalInformationFile \\NOMEDBSERVER\ISTANZA\v1\DOCSERVER\dbo\DMSFile\DOCFS_DF\AE204FBD-B6BC-458B-8868-E9F36A0B2E58\fff7eb752ac746de893ccdb52cfaf0d5 SUCCESS IndexNumber: 0x80000001753e9
    11:36:05,5584788 TEST_FILESTREAM.exe 5232 QueryBasicInformationFile \\NOMEDBSERVER\ISTANZA\v1\DOCSERVER\dbo\DMSFile\DOCFS_DF\AE204FBD-B6BC-458B-8868-E9F36A0B2E58\fff7eb752ac746de893ccdb52cfaf0d5 SUCCESS CreationTime: 01/01/1601 02:00:00, LastAccessTime: 01/01/1601 02:00:00, LastWriteTime: 01/01/1601 02:00:00, ChangeTime: 01/01/1601 02:00:00, FileAttributes: NO
    11:36:05,5604464 TEST_FILESTREAM.exe 5232 QueryStandardInformationFile \\NOMEDBSERVER\ISTANZA\v1\DOCSERVER\dbo\DMSFile\DOCFS_DF\AE204FBD-B6BC-458B-8868-E9F36A0B2E58\fff7eb752ac746de893ccdb52cfaf0d5 SUCCESS AllocationSize: 196.608, EndOfFile: 180.692, NumberOfLinks: 1, DeletePending: False, Directory: False
    11:36:05,5632016 TEST_FILESTREAM.exe 5232 QueryDeviceInformationVolume \\NOMEDBSERVER\ISTANZA\v1\DOCSERVER\dbo\DMSFile\DOCFS_DF\AE204FBD-B6BC-458B-8868-E9F36A0B2E58\fff7eb752ac746de893ccdb52cfaf0d5 SUCCESS DeviceType: Disk, Characteristics: Remote


    Il comportamento è il medesimo sia attivando i firewall che disattivandoli.

    Non so più dove sbattere la testa. Sembra quasi che il server sia stano "bannato" (passatemi il termine, ma è per farvi capire la stranezza del comportamento). Lato SQL le autorizzazioni mi sembrano ok (e comunque utilizzo lo stesso account di dominio per l'accesso). C'è qualcuno esperto in filestream che si voglia lanciare in questa avventura? :-D

    martedì 28 aprile 2020 11:22

Tutte le risposte

  • Ciao,

    sarebbe utile verificare :

    1. se filestream è attivo (EXEC sp_configure filestream_access_level): quale è running value?
    2. da Sql Server Conf. manager->istanza sql-> properties-> tab LogON: annota l'Account Name del servizio 
    3. sul database in questione leggi da properties->Files->Path dei files con filegroups di tipo FILESTREAM e per ognuno verifica p.es. con icacls le permission assegnate all'account del servizio di cui sopra: ha la permission (F) su tutti i path?

    G.

    mercoledì 29 aprile 2020 07:14
  • Ciao,

    intanto grazie per l'interessamento.

    FileStream è attivo con running level pari a 2. L'utente utilizzato dall'ista è service network, il quale ha accesso in controllo completo a tutti i file nel percorso utilizzato dal DB.

    Del resto me lo aspettavo, perché come ti dicevo il software funziona regolarmente da un server, mentre da un altro no. Mi sono fatto l'idea che c'entri non tanto filestream (o comunque la configurazione di Sql Server), bensì il protocollo SMB. In tal senso, forse ho anche sbagliato la sezione del forum in cui postare il mio quesito.

    giovedì 30 aprile 2020 05:56
  • per caso ci sono porte che il firewall tiene chiuse per un server e non per l'altro ?

    https://dba.stackexchange.com/questions/83900/sql-server-filestream-access-denied


    Edoardo Benussi
    Microsoft MVP - Cloud and Datacenter Management
    e[dot]benussi[at]outlook[dot]it

    lunedì 4 maggio 2020 12:42
    Moderatore
  • Non c'è nessun firewall tra i server, al momento: ho anche disabilitato quelli di Windows, proprio per escludere problemi di questo genere.
    lunedì 4 maggio 2020 15:20
  • Ciao
    di seguito alcune domande per delimitare meglio l'area del problema, in particolare la provenienza dell'"Access denied".

    1. Cosa intendi per "abbiamo attivato l'autenticazione a livello di utente"? E' l'autentica Windows?
    2. Si può dire che l'applicativo funziona in generale correttamente tranne quando esegue specifiche query che coinvolgono tabelle/colonne con filestream?
    3. Nel log sql server vi sono messaggi di errore inerenti al filestream e/o dump?
    4. Puoi eseguire da management studio la query dell'applicativo che solleva l'errore? puoi farlo usando lo stesso account dell'applicativo e poi un account sysadmin? 
    5. Puoi creare una nuova semplice tabella con colonna varbinary filestream? riesci ad inserire e poi leggere records?

    G

    martedì 5 maggio 2020 06:58
  • Ciao a tutti,

    finalmente ho trovato il problema che, come ipotizzato inizialmente, nulla aveva a che fare con filestream, o meglio non direttamente.

    Il problema è causato da un software di crittografia dei dati: non appena installato sul server di test, infatti, il problema si è presentato. Disinstallandolo, invece, scompare.

    Approfondirò con la software house il perché di tale comportamento. Nel frattempo vi ringrazio per il supporto e mi scuso per avervi fatto perdere tempo.

    martedì 12 maggio 2020 15:23
  • Ciao,

    nessuna perdita di tempo: condividere i problemi ma anche le soluzioni credo sia uno scopo primario dei forum.

    A me pare quindi che l'access denied che rileva Sql venga proprio dall'utilizzo del filestream e quindi, appurato questo, avremmo proceduto con l'analisi che tipicamente verte intorno all'antivirus o, come hai trovato tu stesso, ad altri software che interferiscono con le API del filesystem usate dal filestream (crittografia, compressione, backup, etc).

    G.

    giovedì 14 maggio 2020 08:35