Un veloce post per sottolineare una funzionalità a mio avviso poco pubblicizzata introdotta dal Service Pack 1 di SQL Server 2012. Con FileTable potete esporre il contenuto di una tabella a schema fisso all’accesso non transazionale tipico dei file systems. Non entro nei dettagli, per un approfondimento vi rimando qui: http://msdn.microsoft.com/en-us/library/ff929144.aspx. Voglio solo segnalarvi che, dal SP1 in poi, è possibile specificare una Access Control List più completa ai files. Nello specifico ora possiamo specificare:

  • Accesso in sola lettura.
  • Accesso in lettura/scrittura.
  • Accesso negato.

La matrice dei privilegi diventa quindi la seguente:

Privilegio logico

GRANT T-SQL

Privilegio di browse delle cartelle

SELECT

Privilegio di lettura

SELECT

Privilegio di scrittura di un file

UPDATE

Privilegio di creazione di un file

UPDATE e INSERT

Privilegio di eliminazione

DELETE

 

Pre service pack era possibile dare solo l'accesso in lettura/scrittura (anche a fronte di un semplice GRANT SELECT).  

Da notare un paio di cose interessanti:

  1. Dato che FileTable utilizza dietro le quinte FileStream per creare un file (anche vuoto) non basta avere il privilegio di INSERT. Bisogna avere anche il privilegio di UPDATE.
  2. È possibile avere un principal che non può modificare i files ma li può eliminare. Ciò può sembrare bizzarro ma è perfettamente coerente con le logiche dei securable di SQL Server.

 

Happy coding,

Francesco Cogno