SQL Server 2012 (“Denali”): FileTable

FileTable is a new feature in SQL Server 2012 that is built on top of SQL Server FILESTREAM technology, which allows BLOB data to be stored as individual files separate from a database’s data files.  Interactions with the FileStream files took place only through T-SQL or through code which engaged with OpenSqlFileStream API.

FileTable goes one step further in adding support for the Windows file namespace and compatibility with Windows applications to the file data stored in SQL Server, accessing the files as if they were stored in the file system.  It also employs a familiar, hierarchical folder structure, and includes the storage of file attributes, such as created date and modified date.

FileTable lets an application integrate its storage and data management components, and provides integrated SQL Server services – including full-text search and semantic search – over unstructured data and metadata.

More info:

Beyond Relational – Installing SQL Server FileTable

Denali CTP 3 – How to Set Up the FileTable and access the unstructured data from SQL Server

Creating Your First FileTable in SQL Server Denali CTP3

SQL Server 2012 FileTables in T-SQL part 1: functions and methods

SQL Server 2012 FileTables in T-SQL part 2: new rows

SQL Server 2012 FileTable – Part 1

SQL Server 2012 FileTable – Part 2

Video Microsoft SQL Server Beyond Relational Landscape: Current and Future

T-SQL Tuesday #29 2012 Party: Dancing on the FileTable

Using FileTables in SQL Server 2012

About James Serra

James is a big data and data warehousing solution architect at Microsoft. Previously he was an independent consultant working as a Data Warehouse/Business Intelligence architect and developer. He is a prior SQL Server MVP with over 25 years of IT experience.
This entry was posted in SQL Server 2012, SQLServerPedia Syndication. Bookmark the permalink.

2 Responses to SQL Server 2012 (“Denali”): FileTable

  1. matan says:


    I played and tested this a bit and i found one big disadvantage in this feature.
    While copying a file, you cannot execute any queries on the DB!
    What happens if you constantly need to copy\delete\modify files?

    Can it really be that no reads are available or am I missing something ?

    If so, this is a major issue and should be pointed out clearly as a limitation.

    Would be happy to hear what you think about it.


  2. Dkr says:

    How can you tie these documents in FILETABLE to an existing record (in another table) as FILETABLE have an schema fixed, or identify the user who owns the document? When using varbinary(max) in a normal table you would know it belogs to that particular row. Maybe using the stream_id as foreign key?