Функция FILESTREAM в SQL Server – это мощная возможность, которая позволяет хранить объекты Varbinary (Max) в файловой системе, а не внутри базы данных. В этой статье мы более подробно рассмотрим функцию FILESTREAM и изучим, как создать базу данных SQL Server с включенной функцией FILESTREAM.
Включение функции FILESTREAM
Прежде чем мы сможем создать базу данных с включенной функцией FILESTREAM, нам необходимо включить FILESTREAM на уровне экземпляра SQL Server. Это можно сделать, следуя этим шагам:
- Откройте SQL Server Configuration Manager
- Включите FILESTREAM
- Укажите уровень доступа к FILESTREAM в SQL Server
Создание базы данных с включенной функцией FILESTREAM
После включения FILESTREAM на уровне экземпляра можно приступить к созданию базы данных с включенной функцией FILESTREAM. Вот шаги:
- Подключитесь к экземпляру SQL Server
- Щелкните правой кнопкой мыши на “Базы данных” и выберите “Новая база данных”
- Укажите имя базы данных и расположение файлов MDF и LDF
- Перейдите на страницу “Файловые группы” и добавьте файловую группу FILESTREAM SQL Server
- Укажите путь, где будут храниться большие файлы
- Создайте базу данных
Создание таблицы с данными FILESTREAM
Теперь, когда у нас есть база данных с включенной функцией FILESTREAM, мы можем создать таблицу с данными FILESTREAM. Вот пример скрипта:
USE [ВашаБазаДанных]
GO
CREATE TABLE [ВашаТаблица]
(
[ИдентификаторФайла] UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE,
[ИмяФайла] VARCHAR(50),
[ДанныеФайла] VARBINARY(MAX) FILESTREAM
);
GO
Вставка и извлечение данных FILESTREAM
После создания таблицы мы можем вставлять и извлекать данные FILESTREAM. Вот пример:
DECLARE @ДанныеФайла VARBINARY(MAX);
SELECT @ДанныеФайла = CAST(bulkcolumn AS VARBINARY(MAX))
FROM OPENROWSET(BULK 'C:\Путь\К\Файлу', SINGLE_BLOB) AS ДанныеФайла;
INSERT INTO [ВашаТаблица] ([ИдентификаторФайла], [ИмяФайла], [ДанныеФайла])
VALUES (NEWID(), 'ПримерФайла', @ДанныеФайла);
SELECT [ИдентификаторФайла], [ИмяФайла], [ДанныеФайла]
FROM [ВашаТаблица];
Обновление и удаление данных FILESTREAM
Обновление и удаление данных FILESTREAM аналогично обновлению и удалению данных в обычной таблице. Вот некоторые примеры команд:
UPDATE [ВашаТаблица]
SET [ДанныеФайла] = (SELECT * FROM OPENROWSET(BULK 'C:\Путь\К\НовомуФайлу', SINGLE_BLOB) AS НовыеДанныеФайла)
WHERE [ИдентификаторФайла] = 'ВашИдентификаторФайла';
DELETE FROM [ВашаТаблица]
WHERE [ИдентификаторФайла] = 'ВашИдентификаторФайла';
Заключение
В этой статье мы изучили функцию FILESTREAM в SQL Server и узнали, как создать базу данных с включенной функцией FILESTREAM. Мы также увидели, как вставлять, извлекать, обновлять и удалять данные FILESTREAM. FILESTREAM – это мощная функция, которая может значительно улучшить хранение и извлечение больших двоичных объектов в SQL Server.