e-Pomoc techniczna
InsERT nexo – Włączenie mechanizmu FILESTREAM
Program: Gestor nexo, Gratyfikant nexo, InsERT nexo, Rachmistrz nexo, Rewizor nexo, Subiekt nexo
Kategoria: Rozwiązania sferyczne
Uwaga! Poniższy artykuł przedstawia przykład jednego z zaawansowanych rozwiązań przygotowanych dla programów linii nexo. W razie problemów prosimy o kontakt z naszymi lokalnymi serwisantami w celu konfiguracji.
Podczas korzystania z programów linii InsERT nexo możliwe jest włączenie mechanizmu FILESTREAM, który pomocny jest m.in. podczas pracy na danych, takich, jak: zdjęcia, pliki wideo, czy dokumenty.
Uruchomienie mechanizmu FILESTREAM (w skrócie FS) odbywa się w następujący sposób:
-
Włączyć FS w usłudze SQL.
-
Włączyć FS w serwerze SQL.
-
Dodać do bazy danych grupę FILESTREAM.
-
Do wybranych tabel dodać wymagane kolumny.
Pierwszym etapem jest uruchomienie FS w usłudze SQL. W tym celu należy:
Uwaga! FILESTREAM nie działa na serwerze SQL w wersji 32-bit, zainstalowanym w systemie operacyjnym 64-bit. (Na 32-bit owym serwerze 32-bitowy SQL działa z FILESTREAM).
1. Uruchomić SQL Server Configuration Manager, kliknąć prawym przyciskiem myszy na instancję SQL i wybrać Właściwości.
2. Na zakładce FILESTREAM zaznaczyć Enable FILESTREAM for Transact-SQL access. Zapisać wprowadzone zmiany przyciskiem OK.
Uwaga! Jeśli opcja ta zostaje włączona po raz pierwszy, wymagany jest reset komputera z serwerem SQL.
3. Kolejno należy uruchomić Microsoft SQL Server Management Studio i zalogować się do usługi SQL.
4. Kliknąć prawym przyciskiem myszy instancję, do której ma zostać dodany FS, następnie wybrać Properties.
5. Przejść do Advanced i w sekcji FILESTRAM parametr FILESTREAMAccessLevel ustawić na Transact-SQL access enabled. Zapisać zmiany przyciskiem OK.
6. Zresetować serwer SQL klikając instancję prawym przyciskiem myszy i wybierając Restart.
7. Kolejnym krokiem jest dodanie grupy FILESTREAM do bazy danych, aby mogła ona zapamiętać dane w systemie plików i zarezerwować miejsce na FILESTREAM.
Mechanizm FILESTREAM wymaga dodania elementu FILEGROUP do bazy danych. W elemencie FILEGROUP należy wskazać element FILE, który wskazuje na katalog, w którym będą tworzone pliki z zawartością atrybutów typu FILESTREAM.
Można posłużyć się poniższym skryptem SQL:
DECLARE @dbName NVARCHAR(100)
-- W poniższych liniach należy wpisać nazwę bazy danych, do której ma zostać dodany FILESTREAM
SET @dbName = N'NAZWA BAZY DANYCH'
use NAZWA BAZY DANYCH
IF NOT EXISTS(
BEGIN
WHERE
END
ELSE
BEGIN
END
8. Ostatnim krokiem jest dodanie atrybutów typu FILESTREAM do tabel. Jedynie atrybuty typu varbinary(max), varchar(max) lub nvarchar(max) mogą być pamiętane w plikach w systemie plików serwera SQL.
Aby użyć FILESTEAM, należy „dodać" do atrybutu typu varbinary(max), varchar(max) lub nvarchar(max) flagę FILESTREAM. Z uwagi na to, że SQL nie przewiduje dodania takiego atrybutu przy pomocy polecenia ALTER TABLE, ALTER COLUMN, należy to zrobić np. przez dodanie nowej kolumny.
Mechanizm FILESTREAM wymaga atrybutu typu UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE w tabelach, które mają atrybuty z flagą FILESTREAM. nexo dodaje do wybranych tabel (lista poniżej) takie właśnie atrybuty.
Poniższy przykład przedstawia, jak można dodać FILESTREAM do tabeli ze zdjęciami w Towarach i Klientach nexo.
-- Wybrać bazę danych
USE [NAZWA BAZY DANYCH]
GO
-- Zmiana nazwy atrybutu, który zawiera zdjęcia (zabieg jest konieczny,
-- bo tabela może zawierać już dane)
--
EXEC sp_rename '[ModelDanychContainer].[ZawartosciDokumentow].[Dane]', 'DaneBak', 'COLUMN';
GO
-- Dodanie atrybutu z flagą FILESTREAM
-- (nie da się zrobić ALTER COLUMN który dodaje/usuwa FILESTREAM)
-- Przed dodaniem kolumny typu FILESTREAM musi być już
-- kolumna typu UNIQUEIDENTIFIER ROWGUIDCOL UNIQUE
-- (w przypadku nexo taka kolumna już jest (Dane_FileStreamId)
--
ALTER TABLE [ModelDanychContainer].[ZawartosciDokumentow]
[Dane] [varbinary](max) FILESTREAM NULL
GO
-- Przepisanie wartości do „nowej" struktury
UPDATE ModelDanychContainer.ZawartosciDokumentow
Dane = DaneBak
GO
-- usunięcie „niepotrzebnej" już kolumny
ALTER TABLE [ModelDanychContainer].[ZawartosciDokumentow]
GO
Obecnie do nexo można ustawić kolumny FILESTREAM w następujących tabelach:
-
ModelDanychContainer.ZawartosciZalacznikowPocztowych atrybut: Dane
-
ModelDanychContainer.ZawartosciDokumentow atrybut: Dane
-
ModelDanychContainer.ZawartosciObiektowBibliotekiDokumentow atrybut: Dane
W przypadku tych tabel dodano na potrzeby FILESTREAM kolumny o nazwie: Dane_FileStreamId
Powiązane zagadnienia e-Pomocy technicznej: