Michael Firsov

har du någonsin tror att din SQL server kan fungera som en filserver? Oddsen är att du inte gjorde det-inte heller gjorde jag förrän jag försökte en FileTable-funktion som först introducerades i SQL Server 2012. FileTable-funktionen är nästa steg i FILESTREAM – tekniken som låter dig lagra filer och mappar i specialtabellerna men komma åt dem med traditionella Windows SMB-protokoll-användare kan skapa/läsa/Ändra/Ta bort filer från en generisk fildelning utan att ens vara medveten om de underliggande SQL-kommandona. Med andra ord låter FileTables oss använda SQL-tabeller för icke-transaktionell åtkomst.

enligt min mening är en av de största fördelarna med FileTables-funktionen lagring av filattribut (som Last-WriteTime, Last_AccessTime, etc.) som tillåter administratörer att granska filåtkomståtgärder med hjälp av motsvarande kolumner i Filtabellerna. I den här artikeln vill jag visa dig hur SQL Server 2012-2016 kan användas för fillagring och vilka granskningsmekanismer som kan utnyttjas för filer och mappar som finns i SQL-filresurserna. Vissa förutsättningar måste uppfyllas innan Filtabeller kan skapas i en databas och vi går igenom alla steg som krävs för att förbereda Filtabeller, sedan skapa flera tabeller och se hur vi kan arbeta med dem.

låt oss börja med att aktivera FILESTREAM för SQL 2012-instansen och skapa en ny FILESTREAM-databas:

https://msdn.microsoft.com/en-us/library/gg509097%28v=sql.120%29.aspx

jag aktiverar FILESTREAM på Windows-nivå

  1. öppna SQL Configuration manager:
    02
  2. kontrollera att följande kryssrutor är markerade:
    03

II aktivera FILESTREAM på SQL-Instansnivå:

  1. i SQL Server Management Studio klickar du på Ny Fråga för att visa Frågeredigeraren.
  2. i Frågeredigeraren anger du följande Transact-SQL-kod:
    EXEC sp_configure filestream_access_level, 2
    RECONFIGURE04

III tillhandahålla en FILESTREAM-filgrupp på databasnivå

innan vi kan skapa Filetabler i en databas måste databasen ha en FILESTREAM-filgrupp på databasnivå

filgrupp. Mer information om denna förutsättning finns i skapa en FILESTREAM-aktiverad databas.
eftersom jag ska skapa en ny databas skapar jag först en mapp för att innehålla Filetabler:
01
och sedan definiera en Filestream-filgrupp i den här koden:

skapa DATABASFILSERVER

primär (NAME = FS,
FILENAME = ’c:\FILESERVER\FSdat.mdf’),
filgrupp FileStreamFS innehåller FILESTREAM (NAME = FSgr,
FILENAME = ’c:\FILESERVER\fs1’)
logga in (namn = FSlog, filnamn = ’ c:\ FILESERVER \ FSlog.LDF’)

uppmärksamhet! Som MS säger: ”För en FILESTREAM-filgrupp hänvisar filnamn till en sökväg. Sökvägen till den sista mappen måste finnas och den sista mappen får inte finnas.”I den föregående koden, c:\FILESERVER måste finnas, men fs1 får inte när du kör CREATE DATABASE-satsen.

05

10

sidan filegroups database property visar nu filestreamfs filestream för filserver-databasen:
07

IV aktivera icke-transaktionell åtkomst på databasnivå

När vi har skapat databasen är det sista steget i att förbereda det för Filetabler att aktivera icke-transaktionell åtkomst på databasnivå.

FileTables låter Windows-program få ett Windows – filhandtag till FILESTREAM-data utan att kräva en transaktion. För att tillåta denna icke-transaktionella åtkomst till filer som lagras i SQL Server måste du ange önskad nivå för icke-transaktionell åtkomst på databasnivån för varje databas som innehåller Filtabeller. Om vi kör följande kod –

välj DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
från sys.database_filestream_options;
GO

…Vi ser att inga databaser har icke-transaktionell åtkomst aktiverad:
08

för att aktivera icke-transaktionell åtkomst till filer på databasnivå (för filserverdatabasen i det här fallet) måste ytterligare ett alternativ anges – en katalog för Filetabler: det är katalogen jag har skapat i början av artikel – C:\FILESERVER, men katalognamnet ska skrivas utan enhetsbokstaven och symbolen ”\”:

ALTER DATABASE FILESERVER
SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N’ fileserver’)
GO

09

”i filetable-mapphierarkin blir denna databasnivåkatalog den största underordnad det DELNINGSNAMN som anges för FileStream på instansnivå, och föräldern till filetab – lerna som skapats i databasen”-det betyder att FILESERVER kommer att vara undermappen för MSSQLSERVER share eftersom jag inte har ändrat den i steg i-2. För mer information, se arbeta med kataloger och sökvägar i Filtabeller

Om du kör den här koden igen visas att icke-transaktionell åtkomst har aktiverats framgångsrikt:

välj DB_NAME(database_id), non_transacted_access, non_transacted_access_desc
från sys.database_filestream_options;
GO

09-1

följande kod visar katalognamnet för FILSERVERDATABSE:

Välj DB_NAME ( database_id), direcory_name
från sys.database_filestream_options;
GO

11

här är ”SQL”-fildelning som användare nu kan använda för att lagra sina filer och mappar:10-1110-12

Om jag hade bytt namn på standard mssqlserver – delen till något som share1 i steg i-2 skulle det inte ha varit någon indikation på någon SQL Server involverad-ur användarens perspektiv skulle det bara vara en vanlig fildelning.

alla förutsättningar för att skapa Filtabeller är uppfyllda nu och vi kan fortsätta att skapa Filtabeller.

arbeta med SQL Server – Filtabeller-del 2

Lämna ett svar

Din e-postadress kommer inte publiceras.