Włączanie filestream w MS SQL
Filestream to funkcjonalność serwera SQL, która pozwala umieścić niektóre tabele poza bazą danych i w konsekwencji często rozwiązać lub ograniczyć problem limitu 10 GB w serwerach SQL Expres. Taką możliwość musi posiadać program pracujący na bazach MS SQL. Jednym z takich programów są programy Insert Nexo
- Włączamy filestream dla wybranego serwera MS SQL używając sql serwer manager
![](https://i0.wp.com/arwal.com.pl/wp-content/uploads/2024/03/image-29.png?resize=1024%2C796&ssl=1)
Po włączeniu filestream uruchamiamy ponownie komputer
2. Za pomocą SQL Management Studio włączamy filestream na serwerze SQL
![](https://i0.wp.com/arwal.com.pl/wp-content/uploads/2024/03/image-31.png?resize=1024%2C732&ssl=1)
3. Za pomocą kwerendy SQL ( używając SQL management studio ) dodajemy grupę filestream do serwera SQL
DECLARE @dbName NVARCHAR(100)
-- W poniższych liniach należy wpisać nazwę bazy danych, do której chcemy dodać FILESTREAM
SET @dbName = N'nexo_AddFSToThisDB'
use nexo_AddFSToThisDB
IF NOT EXISTS(
select 1 from sys.database_files phf
inner join sys.filegroups fg on phf.data_space_id = fg.data_space_id
where fg.type_desc = N'FILESTREAM_DATA_FILEGROUP' )
BEGIN
DECLARE @fsFileName nvarchar(260)
DECLARE @fsFileLogicalName nvarchar(260)
DECLARE @fileSteramGroupName NVARCHAR(100)
DECLARE @pfname nvarchar(260)
DECLARE @sql nvarchar(max)
SET @fileSteramGroupName = N'[FileStreamGroup]'
select @pfname = MAX(phf.physical_name) from sys.database_files phf
inner join sys.filegroups fg on phf.data_space_id = fg.data_space_id
WHERE
fg.is_default= 1
AND fg.type_desc = N'ROWS_FILEGROUP'
SET @fsFileName = LEFT(@pfname, LEN(@pfname)-4)+'.fst'
SET @fsFileLogicalName = @dbName + '.fst'
PRINT 'Add FILESTREAM support';
PRINT 'Adding FILEGROUP for FILESTREAM...'
SET @sql = 'ALTER DATABASE ' + QUOTENAME(@dbName) + ' ADD FILEGROUP '+ @fileSteramGroupName+' CONTAINS FILESTREAM';
EXEC (@sql);
PRINT 'Adding Container in FILESTREAM Group'
SET @sql = 'ALTER DATABASE ' + QUOTENAME(@dbName) + ' ADD FILE ( NAME = N''' +@fsFileLogicalName + ''', FILENAME = N''' + @fsFileName + ''') TO FILEGROUP '+ @fileSteramGroupName
EXEC (@sql);
END
ELSE
BEGIN
PRINT 'Already have FILESTREAM.'
END
Dalsze kroki zależą od programu i tabel, dla których chcemy użyć filestream. W programach linii nexo są to zdjęcia, załączniki wiadomości pocztowych, biblioteka dokumentów. Aby dowiedzieć się które tabele zajmują dużo miejsca w bazie możemy użyć skryptu