Filsystemfil, som rad i tabell – FileTable i Denali CTP3 (SQL 2012)

Oopps! Upgrade your browser pretty please. Oopps! Upgrade your browser pretty please.

I Denali CTP3 (SQL Server 2012) finns det en nytt djur som heter “FileTable”. Det är något som påminner om Filestream, och också bygger på det, men känns ännu mer direkt att “ta på”. I stort så pekar man ut en katalog (eller egentligen skapar en innefrån SQL Server) som man sedan kan nå antinen direkt från filsystemet, eller från T-SQL, för att kopiera filer till, eller uppdatera/ta bort filer från. Samma katalogs filer följer med backup av en databas där filetable tabellen är definierad. Blobs on steroids helt enkelt. Sen har jag svårt att krysta fram ett bra use case när det kommer väl till pass, men alla som sparar dokument via applikationer borde verkligen kolla upp det. De här är väl bästa exemplet just nu som jag hört om: http://sqlrace.com/ Undrar om Tobias Thernström varit inblandad på något hörn i det, med tanke på hans racing intresse? 🙂

Här är hur jag satte upp det, kom ihåg att inte köra i en produktionsmiljö det första ni gör – dvs om ni nu har Denali där redan 🙂 –OBS! gör det här före SQL Server Denali delen: /* To enable and change FILESTREAM settings

1.On the Start menu, point to All Programs, point to Microsoft SQL Server Code-Named “Denali”, point to Configuration Tools, and then click SQL Server Configuration Manager.
2.In the list of services, right-click SQL Server Services, and then click Open.
3.In the SQL Server Configuration Manager snap-in, locate the instance of SQL Server on which you want to enable FILESTREAM.
4.Right-click the instance, and then click Properties.
5.In the SQL Server Properties dialog box, click the FILESTREAM tab.
6.Select the Enable FILESTREAM for Transact-SQL access check box.
7.If you want to read and write FILESTREAM data from Windows, click Enable FILESTREAM for file I/O streaming access. Enter the name of the Windows share in the Windows Share Name box.
8.If remote clients must access the FILESTREAM data that is stored on this share, select Allow remote clients to have streaming access to FILESTREAM data.
9.Click Apply. ****/ –aktivera det i SQL Server Denali EXEC sp_configure filestream_access_level, 2 RECONFIGURE –Configuration option ‘filestream access level’ changed from 0 to 2. Run the RECONFIGURE statement to install. SELECT * FROM sys.filetables; GO — DROP DATABASE DemoDenali –då jag provade några olika varianter GO –skapa databasen inklusive en filegroup + fil för filestream CREATE DATABASE [DemoDenali]  CONTAINMENT = NONE  ON  PRIMARY ( NAME = N’DemoDenali’, FILENAME = N’C:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVER_0MSSQLDATADemoDenali.mdf’ , SIZE = 5120KB , FILEGROWTH = 1024KB ),  FILEGROUP [Secondary] ( NAME = N’DemoDenali_1′, FILENAME = N’C:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVER_0MSSQLDATADemoDenali_1.ndf’ , SIZE = 5120KB , FILEGROWTH = 1024KB ), FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM( NAME = DemoDenali_2,     FILENAME = ‘c:MyFileTableDemofilestream1′)  LOG ON ( NAME = N’DemoDenali_log’, FILENAME = N’C:Program FilesMicrosoft SQL ServerMSSQL11.MSSQLSERVER_0MSSQLDATADemoDenali_log.ldf’ , SIZE = 1024KB , FILEGROWTH = 10%) GO ALTER DATABASE [DemoDenali] SET COMPATIBILITY_LEVEL = 110 GO ALTER DATABASE [DemoDenali] SET ANSI_NULL_DEFAULT OFF GO ALTER DATABASE [DemoDenali] SET ANSI_NULLS OFF GO ALTER DATABASE [DemoDenali] SET ANSI_PADDING OFF GO ALTER DATABASE [DemoDenali] SET ANSI_WARNINGS OFF GO ALTER DATABASE [DemoDenali] SET ARITHABORT OFF GO ALTER DATABASE [DemoDenali] SET AUTO_CLOSE OFF GO ALTER DATABASE [DemoDenali] SET AUTO_CREATE_STATISTICS ON GO ALTER DATABASE [DemoDenali] SET AUTO_SHRINK OFF GO ALTER DATABASE [DemoDenali] SET AUTO_UPDATE_STATISTICS ON GO ALTER DATABASE [DemoDenali] SET CURSOR_CLOSE_ON_COMMIT OFF GO ALTER DATABASE [DemoDenali] SET CURSOR_DEFAULT  GLOBAL GO ALTER DATABASE [DemoDenali] SET CONCAT_NULL_YIELDS_NULL OFF GO ALTER DATABASE [DemoDenali] SET NUMERIC_ROUNDABORT OFF GO ALTER DATABASE [DemoDenali] SET QUOTED_IDENTIFIER OFF GO ALTER DATABASE [DemoDenali] SET RECURSIVE_TRIGGERS OFF GO ALTER DATABASE [DemoDenali] SET  DISABLE_BROKER GO ALTER DATABASE [DemoDenali] SET AUTO_UPDATE_STATISTICS_ASYNC OFF GO ALTER DATABASE [DemoDenali] SET DATE_CORRELATION_OPTIMIZATION OFF GO ALTER DATABASE [DemoDenali] SET PARAMETERIZATION SIMPLE GO ALTER DATABASE [DemoDenali] SET READ_COMMITTED_SNAPSHOT OFF GO ALTER DATABASE [DemoDenali] SET  READ_WRITE GO ALTER DATABASE [DemoDenali] SET RECOVERY FULL GO ALTER DATABASE [DemoDenali] SET  MULTI_USER GO ALTER DATABASE [DemoDenali] SET PAGE_VERIFY CHECKSUM  GO ALTER DATABASE [DemoDenali] SET TARGET_RECOVERY_TIME = 0 SECONDS GO USE [DemoDenali] GO IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N’Secondary’) ALTER DATABASE [DemoDenali] MODIFY FILEGROUP [Secondary] DEFAULT GO

–om du har installerat fulltext så enabla den, annars installera den först… IF (1 = FULLTEXTSERVICEPROPERTY(‘IsFullTextInstalled’)) begin EXEC [DemoDenali].[dbo].[sp_fulltext_database] @action = ‘enable’ end GO –Peka ut den logiska sökvägen ALTER DATABASE DemoDenali SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL , DIRECTORY_NAME = N’MyFileTableDemo’ ) — ========================================= — Create FileTable, använd directory name — ========================================= USE demoDenali GO IF OBJECT_ID(‘dbo.MyFileTable’, ‘U’) IS NOT NULL   DROP TABLE dbo.MyFileTable GO CREATE TABLE DemoDenali.dbo.MyFileTable AS FILETABLE   WITH   (     FILETABLE_DIRECTORY = ‘MyFileTableDemo’  , FILETABLE_COLLATE_FILENAME = database_default   ) GO

–här kan jag nu lägga filer så att sql server förstår att de ligger där:
127.0.0.1mssqlserverMyFileTableDemoMyFileTableDemo SELECT * FROM DemoDenali.dbo.MyFileTable stream_id        file_stream    name  path_locator         parent_path_locator file_type cached_file_size creation_time      last_write_time      last_access_time     is_directory is_offline is_hidden is_readonly is_archive is_system is_temporary F89F1F7E-0FFF-E011-B110-2C413808B2AD 0x68656A3B76E4726C64 test.txt 0xFF79A256171911CFCBD15291886818F85E618E32A0 NULL    txt   9     2011-10-25 15:44:43.9809169 +02:00 2011-10-25 15:45:11.2925555 +02:00 2011-10-25 15:45:11.2925555 +02:00 0    0   0   0   1   0   0

Ja, sen är det bara fantasin som stoppar dig (och stoppade mig). Sammanfattning: Efter man kommit över den något stökiga konfigurationen – FileTable har sina specifika tillämpningsområden, men om du arbetar inom dem så prova och se med vilken lätthet man kan administrera sina “blobs”.  

/Jonas Bergström