Skip Navigation LinksALVAO 10.4ALVAO Service DeskImplementace systému v organizaciVlastní úpravy a rozšířeníUkládání příloh mimo databázi Skip Navigation Links.


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

  1. Povolení filestreamu na MS SQL serveru
    • Povolení filestreamu v průběhu instalace MS SQL Server
      1. Otevřete stránku Database Engine Configuration.
      2. 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
      3. Pokračujte v instalaci.
    • Povolení filestreamu po instalaci MS SQL Server
      1. Spusťte SQL Server Configuration Manager.
      2. Klikněte pravým tlačítkem na instanci SQL Server Service, které chcete povolit filestream.
      3. Na záložce FILESTREAM postupně zapněte všechny možnosti.
      4. Uložte stisknutím OK.
      5. Spusťte SQL Server Management Studio
      6. 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
      1. Zde si stáhněte skript na povolení filestreamu z příkazového řádku.
      2. 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.
      3. Spusťte SQL Server Management Studio
      4. Spusťte SQL skript nad cílovou DB ALVAO:
        • EXEC sp_configure filestream_access_level, 2
          GO
          RECONFIGURE
          GO
  2. Přidání filestreamu do databáze
    1. Spusťte SQL Server Management Studio.
    2. 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.
  3. Přidání filestreamu do tabulky tDocument
    1. Spusťte SQL Server Management Studio.
    2. 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

  1. Odebrání filestreamu z tabulky tDocument
    1. 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")
  2. Odebrání filestreamu z databáze
    1. 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
  3. Zakázání filestreamu na MS SQL Serveru
    • Zakázání v SQL Configuration Manager
      1. Spusťte SQL Server Management Studio.
      2. Spusťte nad cílovou DB ALVAO SQL skript:
        • EXEC sp_configure filestream_access_level, 0
          GO
          RECONFIGURE
          GO
      3. Spusťte SQL Server Configuration Manager.
      4. Klikněte pravým tlačítkem na instanci SQL Server Service, na které chcete zakázat filestream.
      5. Na záložce FILESTREAM postupně vypněte všechny možnosti.
      6. Uložte stisknutím OK.
    • Zakázání v příkazovém řádku
      1. Spusťte SQL Server Management Studio.
      2. Spusťte nad cílovou DB ALVAO SQL skript:
        • EXEC sp_configure filestream_access_level, 0
          GO
          RECONFIGURE
          GO
      3. Zde si stáhněte skript na nastavení filestreamu z příkazového řádku.
      4. 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.