Ukládání příloh mimo databázi
Přílohy, které obvykle zabírají největší část celé databáze, je možné ukládat i mimo databázi pomocí technologie filestream.
Velikost příloh se pak nepočítá do velikosti samotné databáze.
Zapněte tuto volbu v případě, že požadavky často obsahují přílohy, které pak výrazně zvětšují velikost
databáze, a chcete
Alvao používat na Microsoft SQL Server Express, kde je omezená velikost
databáze.
Poznámka:
Nastavení ukládání příloh mimo databázi nemá vliv na výkon systému Alvao.
Zapnutí volby ukládání příloh mimo databázi
- Povolení filestreamu na MS SQL serveru
- Povolení filestreamu v průběhu
instalace MS SQL Server
- Otevřete stránku Database
Engine Configuration.
- Na záložce FILESTREAM
postupně zapněte volby:
- Enable
FILESTREAM for
Transact-SQL
access
- Enable
FILESTREAM for
file I/O
streaming access
- Allow remove
clients to have
streaming access
to FILESTREAM
data
- Pokračujte v instalaci.
- Povolení filestreamu po instalaci MS
SQL Server
- Spusťte SQL Server
Configuration Manager.
- Klikněte pravým tlačítkem na
instanci SQL Server Service,
které chcete povolit filestream.
- Na záložce FILESTREAM
postupně zapněte všechny
možnosti.
- Uložte stisknutím OK.
- Spusťte SQL Server
Management Studio
- Spusťte nad cílovou DB
Alvao tento SQL skript:
- EXEC sp_configure
filestream_access_level,
2
GO
RECONFIGURE
GO
- Přidání filestreamu do databáze
- Spusťte SQL Server Management Studio.
- Spusťte nad cílovou DB Alvao SQL skript:
- ALTER DATABASE [<název_databáze>]
ADD FILEGROUP fstDocumentGroup
contains filestream;
go
declare @db_name varchar (MAX)
declare @filestream_loc varchar
(MAX)
SELECT @db_name = physical_name
FROM sys.master_files WHERE
database_id = DB_ID(DB_NAME())
AND type_desc = 'ROWS'
set @db_name =
REVERSE(RIGHT(REVERSE(@db_name),(LEN(@db_name)-CHARINDEX('\',
REVERSE(@db_name),1))+1))
set @filestream_loc = @db_name +
'AlvaoFileStream'
DECLARE @AddFileSql
varchar(max);
SET @AddFileSql = 'ALTER
DATABASE [<název_databáze>]
ADD FILE
( NAME = ''fstDocument'',
FILENAME = ' + QuoteName(
@filestream_loc, '''' ) + ')
TO FILEGROUP [fstDocumentGroup];
';
EXEC (@AddFileSql);
Poznámka:
Uvedený skript vytvoří složku pro ukládání filestreamu ve složce se soubory databáze.
Pokud chcete filestream ukládat do vlastní definované složky, tak zadejte její název včetně absolutní cesty do proměnné @filestream_loc:
- ALTER DATABASE [<název_databáze>]
ADD FILEGROUP fstDocumentGroup
contains filestream;
go
declare @filestream_loc varchar
(MAX)
set @filestream_loc = 'C:\<path>\<folder_with_filestream>'
DECLARE @AddFileSql
varchar(max);
SET @AddFileSql = 'ALTER
DATABASE [<název_databáze>]
ADD FILE
( NAME = ''fstDocument'',
FILENAME = ' + QuoteName(
@filestream_loc, '''' ) + ')
TO FILEGROUP [fstDocumentGroup];
';
EXEC (@AddFileSql);
Upozornění:
Cílová složka v době spuštění skriptu nesmí existovat. Bude automaticky vytvořena po spuštění skirptu.
- Přidání filestreamu do tabulky tDocument
- Spusťte SQL Server Management Studio.
- Spusťte nad cílovou DB Alvao SQL skript:
- ALTER TABLE dbo.tDocument
SET (FILESTREAM_ON =
fstDocumentGroup)
GO
ALTER TABLE dbo.tDocument
ADD TempColumn varbinary(max)
FILESTREAM NULL
GO
DECLARE @curId INT
DECLARE @db_cursor CURSOR
SET @db_cursor = CURSOR FOR
SELECT iDocumentId FROM
dbo.tDocument WHERE oDocument IS
NOT NULL
OPEN @db_cursor
FETCH NEXT FROM @db_cursor INTO
@curId
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE dbo.tDocument SET
TempColumn = oDocument WHERE
iDocumentId = @curId
UPDATE dbo.tDocument SET
oDocument = NULL WHERE
iDocumentId = @curId
FETCH NEXT FROM @db_cursor INTO
@curId
END
CLOSE @db_cursor
DEALLOCATE @db_cursor
GO
ALTER TABLE dbo.tDocument DROP
COLUMN oDocument
GO
EXEC sp_rename
'dbo.tDocument.TempColumn',
'oDocument', 'COLUMN'
GO
Vypnutí volby ukládání příloh mimo databázi
- Odebrání filestreamu z tabulky tDocument
- V SQL Server Management Studio spusťte nad
cílovou DB Alvao skript:
- ALTER TABLE dbo.tDocument
ADD TempColumn varbinary(max)
GO
DECLARE @curId INT
DECLARE @db_cursor CURSOR
SET @db_cursor = CURSOR FOR
SELECT iDocumentId FROM
dbo.tDocument WHERE oDocument IS
NOT NULL
OPEN @db_cursor
FETCH NEXT FROM @db_cursor INTO
@curId
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE dbo.tDocument SET
TempColumn = oDocument WHERE
iDocumentId = @curId
UPDATE dbo.tDocument SET
oDocument = NULL WHERE
iDocumentId = @curId
FETCH NEXT FROM @db_cursor INTO
@curId
END
CLOSE @db_cursor
DEALLOCATE @db_cursor
GO
ALTER TABLE dbo.tDocument DROP
COLUMN oDocument
GO
EXEC sp_rename
'dbo.tDocument.TempColumn',
'oDocument', 'COLUMN'
GO
ALTER TABLE dbo.tDocument set
(filestream_on = "NULL")
- Odebrání filestreamu z databáze
- V SQL Management Studio spusťte skript:
- ALTER DATABASE [<název_databáze>]
REMOVE FILE fstDocument
GO
ALTER DATABASE [<název_databáze>]
REMOVE FILEGROUP
fstDocumentGroup
GO
- Zakázání filestreamu na MS SQL Serveru
- Zakázání v SQL Configuration Manager
- Spusťte SQL Server
Management Studio.
- Spusťte nad cílovou DB
Alvao SQL skript:
- EXEC
sp_configure
filestream_access_level,
0
GO
RECONFIGURE
GO
- Spusťte SQL Server
Configuration Manager.
- Klikněte pravým tlačítkem na
instanci SQL Server Service,
na které chcete zakázat filestream.
- Na záložce FILESTREAM
postupně vypněte všechny
možnosti.
- Uložte stisknutím OK.
Nenašli jste co jste hledali? Zeptejte se našeho týmu technické podpory.