Что такое FileStream в MS SQL: функциональность и особенности

FileStream в MS SQL - это специальный тип данных, который позволяет хранить и управлять большими двоичными файлами, такими как изображения, видео или аудио, напрямую в базе данных.

Он обеспечивает эффективное хранение и доступ к файлам, а также поддерживает операции чтения и записи на уровне базы данных.

Вот пример использования FileStream для записи и чтения файла из базы данных:


-- Создание таблицы с полем FileStream
CREATE TABLE Files
(
  ID INT PRIMARY KEY,
  FileData VARBINARY(MAX) FILESTREAM
)

-- Запись файла в базу данных
INSERT INTO Files (ID, FileData)
VALUES (1, (SELECT * FROM OPENROWSET(BULK N'C:\Path\To\File.jpg', SINGLE_BLOB) AS FileData))

-- Чтение файла из базы данных
SELECT FileData.PathName() AS FilePath, GET_FILESTREAM_TRANSACTION_CONTEXT() AS TransactionContext
FROM Files
WHERE ID = 1
  

Детальный ответ

Что такое filestream в MS SQL?

Filestream - это функциональность, предоставляемая Microsoft SQL Server, которая позволяет хранить и управлять файлами внутри базы данных. С его помощью можно хранить крупные файлы, такие как изображения, видео, аудио и документы, в базе данных, вместо хранения их на файловой системе.

Использование filestream позволяет разработчикам хранить файлы непосредственно в таблицах базы данных, обеспечивая сохранность и целостность данных. Он также облегчает доступ и управление этими файлами через структурированные запросы SQL. Filestream может быть полезным, когда необходимо связать файлы с конкретными записями в таблице.

Для начала использования функции Filestream вам потребуется выполнить несколько шагов:

  1. Включить и настроить Filestream в экземпляре SQL Server.
  2. Создать столбец varbinary (filestream) в таблице, чтобы хранить файлы.
  3. Написать соответствующий код для загрузки и извлечения файлов из базы данных.

Шаг 1: Включение и настройка Filestream

Перед использованием функции Filestream в SQL Server необходимо убедиться, что она включена и настроена на экземпляре SQL Server. Вот как это сделать:


EXEC sp_configure 'filestream_access_level', 2;
RECONFIGURE;
    

Шаг 2: Создание столбца varbinary (filestream)

Для того чтобы использовать Filestream, нужно добавить столбец типа varbinary (filestream) в таблицу, которая будет хранить файлы. Например, представим таблицу "Documents" со столбцами "ID", "Name" и "FileData". Вы можете сделать это с помощью следующего кода:


ALTER TABLE Documents
ADD FileData varbinary(max) FILESTREAM;
    

Шаг 3: Загрузка и извлечение файлов из базы данных

Теперь, когда у вас есть столбец varbinary (filestream), вы можете загружать и извлекать файлы из базы данных. Для этого вы можете использовать функции OPENROWSET и FILESTREAM непосредственно в запросах SQL.

Возьмем пример вставки файла в базу данных:


INSERT INTO Documents (Name, FileData)
SELECT 'example.pdf',
        * FROM OPENROWSET(BULK N'C:\path\to\example.pdf', SINGLE_BLOB) AS FileData;
    

А вот пример извлечения файла из базы данных:


SELECT Name,
        FileData.PathName(),
        GET_FILESTREAM_TRANSACTION_CONTEXT()
FROM Documents
WHERE Name = 'example.pdf';
    

Вышеуказанный код демонстрирует, как загрузить файл "example.pdf" в таблицу "Documents" и как извлечь его данные позже. Функция GET_FILESTREAM_TRANSACTION_CONTEXT() возвращает контекст транзакции, который может использоваться для работы с файлами filestream.

Обратите внимание, что для использования функциональности Filestream необходимо правильно настроить базу данных, таблицу и столбец, а также иметь соответствующие разрешения и отслеживать целостность базы данных. Это включает в себя обслуживание и дополнительные сложности при резервном копировании и восстановлении базы данных.

Вывод

Filestream - это полезная функциональность, предоставляемая Microsoft SQL Server, которая позволяет хранить и управлять файлами внутри базы данных. Это удобно, когда необходимо связывать файлы с конкретными записями в таблице. При использовании Filestream следует учитывать дополнительные шаги настройки и управления базой данных, но это открывает новые возможности для работы с файлами и улучшает общую эффективность приложений.

Видео по теме

FILESTREAM в SQL Server 2019

FILESTREAM in SQL Server 2014 - practical introduction

Файловые таблицы (FileTables, FileStream) в SQL Server 2012

Похожие статьи:

Что такое FileStream в MS SQL: функциональность и особенности