Ukládání příloh mimo databázi
Přílohy, které obvykle zabírají největší část celé databáze, lze ukládat mimo databázi pomocí technologie filestream. Velikost příloh se pak nezapočítává do velikosti samotné databáze.
Tuto možnost zaškrtněte, pokud dotazy často obsahují přílohy, které pak výrazně zvyšují velikost databáze, a chcete používat Alvao na Microsoft SQL Server Express, kde je velikost databáze omezena.
Poznámka:
Nastavení ukládání příloh mimo databázi nemá vliv na výkonnost systému Alvao
Deaktivace možnosti ukládání příloh mimo databázi
- Povolení proudu souborů na serveru MS SQL
- Povolení proudu souborů při instalaci MS SQL Serveru
- Otevřete stránku Konfigurace databázového stroje.
- Na kartě FILESTREAM postupně povolte následující možnosti:
- Povolit FILESTREAM pro přístup v jazyce Transact-SQL
- Povolit FILESTREAM pro přístup k souborovému I/O streamu
- Povolit klientům odebírání proudový přístup k datům FILESTREAM
- Pokračovat v instalaci.
- Povolení proudu souborů po instalaci MS SQL Serveru
- Spusťte Správce konfigurace SQL Serveru.
- Klepněte pravým tlačítkem myši na instanci služby SQL Server, které chcete povolit proud souborů.
- Na kartě FILESTREAM postupně zapněte všechny možnosti.
- Uložte kliknutím na tlačítko OK.
- Spusťte SQL Server Management Studio
- Spusťte následující skript SQL nad cílovou DB Alvao:
- EXEC sp_configure filestream_access_level, 2
GO
RECONFIGURE
GO
- Přidání proudu souborů do databáze
- Spusťte SQL Server Management Studio.
- Spusťte skript Alvao SQL nad cílovou DB:
- ALTER DATABÁZE[<název_databáze>]
ADD FILEGROUP fstDocumentGroup obsahuje 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:
Výše uvedený skript vytvoří složku pro uložení souborového proudu ve složce databázových souborů.
Pokud chcete uložit tok souborů do vlastní definované složky, zadejte název složky včetně absolutní cesty do proměnné @filestream_loc:
- ALTER DATABÁZE[<název_databáze>]
ADD FILEGROUP fstDocumentGroup obsahuje filestream;
go
declare @filestream_loc varchar (MAX)
set @filestream_loc = 'C:\<cesta>\<složka_s_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 nesmí v době spuštění skriptu existovat. Bude automaticky vytvořena při spuštění skriptu
- Přidání proudu souborů do tabulky tDocument
- Spusťte aplikaci SQL Server Management Studio.
- Spusťte skript Alvao SQL nad cílovou DB:
- 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
Zakázání možnosti ukládat přílohy mimo databázi
- Odstranění proudu souborů z tabulky tDocument
- V prostředí SQL Server Management Studio spusťte následující skript nad cílovou DB Alvao:
- 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")
- Odstranění proudu souborů z databáze
- V aplikaci 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í proudu souborů na MS SQL Serveru
- Zakázání ve Správci konfigurace SQL
- Spusťte SQL Server Management Studio.
- Spusťte skript Alvao SQL nad cílovou DB:
- EXEC sp_configure filestream_access_level, 0
GO
RECONFIGURE
GO
- Spusťte Správce konfigurace SQL Serveru.
- Klikněte pravým tlačítkem myši na instanci služby SQL Server, u které chcete zakázat proud souborů.
- Na kartě FILESTREAM postupně zakažte všechny možnosti.
- Uložte kliknutím na tlačítko OK.
Nenašli jste co jste hledali? Zeptejte se našeho týmu technické podpory.