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
- Povolení filestreamu z příkazového
řádku
-
Zde si stáhněte skript na
povolení filestreamu z
příkazového řádku.
- V příkazovém řádku spusťte
příkaz:
- cscript
filestream_enable.vbs
/Machine:<název
stroje>
/Instance:<instance
sql serveru>
/Level:3
Parametry:
Machine:
Jméno cílového
stroje. Není-li
specifikováno, je
zvolen lokální
stroj.
Instance:
Instance sql
serveru. Není-li
specifikována, je
použitá výchozí
(MSSQLSERVER).
Level:
Úroveň
FILESTREAM
funkcionality,
která bude
povolena.
Není-li
specifikována,
zvolí se 3.
0 -
FILESTREAM
funkcionalita je
vypnutá.
1 -
Povolí
FILESTREAM pro
T-SQL přístup.
2 -
Povolí
FILESTREAM pro
T-SQL a I/O
streaming
přístup ale
nepovolí
vzdálený I/O
streaming
přístup.
3 -
Povolí
FILESTREAM pro
T-SQL a I/O
streaming
přístup i pro
vzdálený I/O
streaming
přístup.
- Spusťte SQL Server
Management Studio
- Spusťte SQL skript nad
cílovou DB ALVAO:
- 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 uniqueGUID UNIQUEIDENTIFIER
NOT NULL ROWGUIDCOL
CONSTRAINT
UQ_tDocument_uniqueGUID UNIQUE
CONSTRAINT
DF_tDocument_uniqueGUID DEFAULT
newid()
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")
GO
ALTER TABLE dbo.tDocument ALTER
COLUMN uniqueGUID DROP
ROWGUIDCOL
GO
ALTER TABLE dbo.tDocument DROP
CONSTRAINT
DF_tDocument_uniqueGUID
GO
ALTER TABLE dbo.tDocument DROP
CONSTRAINT
UQ_tDocument_uniqueGUID
GO
ALTER TABLE dbo.tDocument DROP
COLUMN uniqueGUID
- 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.
- Zakázání v příkazovém řádku
- 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
-
Zde si stáhněte skript na
nastavení filestreamu z
příkazového řádku.
- V příkazovém řádku spusťte
příkaz:
- cscript
filestream_enable.vbs
/Machine:<název
stroje>
/Instance:<instance
sql serveru>
/Level:0
Nenašli jste co jste hledali? Zeptejte se našeho týmu technické podpory.
|