Поделиться через


Доступ к данным FILESTREAM с помощью Transact-SQL

В этом разделе описывается использование инструкций Transact-SQL INSERT, UPDATE и DELETE для управления данными FILESTREAM.

Замечание

В примерах этого раздела требуется база данных с поддержкой FILESTREAM и таблица, созданные в статье "Создание базы данных FILESTREAM-Enabled " и создание таблицы для хранения данных FILESTREAM.

Вставка строки, содержащей данные FILESTREAM

Чтобы добавить строку в таблицу, поддерживающую данные FILESTREAM, используйте инструкцию Transact-SQL INSERT. При вставке данных в столбец FILESTREAM, можно вставить NULL или значение varbinary(max).

Вставка NULL

В следующем примере показано, как вставить NULL. Если значение FILESTREAM равно NULL, ядро СУБД не создает файл в файловой системе.

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 1, NULL);
GO

Вставка записи Zero-Length

В следующем примере показано, как использовать INSERT для создания записи нулевой длины. Это полезно, когда требуется получить дескриптор файла, но манипулировать файлом необходимо с помощью API Win32.

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 2, 
      CAST ('' as varbinary(max)));
GO

Создание файла данных

В следующем примере показано, как создать INSERT файл, содержащий данные. Ядро СУБД преобразует строку Seismic Data в varbinary(max) значение. FILESTREAM создает файл Windows, если он еще не существует. Затем данные добавляются в файл данных.

INSERT INTO Archive.dbo.Records
    VALUES (newid (), 3, 
      CAST ('Seismic Data' as varbinary(max)));
GO

При выборе всех данных из элемента Archive. dbo.Records таблица, результаты похожи на результаты, отображаемые в следующей таблице. Однако столбец Id будет содержать разные идентификаторы GUID.

Идентификатор Серийный номер Резюме
C871B90F-D25E-47B3-A560-7CC0CA405DAC 1 NULL
F8F5C314-0559-4927-8FA9-1535EE0BDF50 2 0x
7F680840-B7A4-45D4-8CD5-527C44D35B3F 3 0x536569736D69632044617461

Обновление данных FILESTREAM

Вы можете использовать Transact-SQL для обновления данных в файле файловой системы; Хотя это может не потребоваться сделать, если необходимо передавать большие объемы данных в файл.

В следующем примере любой текст в записи файла заменяется текстом Xray 1.

UPDATE Archive.dbo.Records
SET [Chart] = CAST('Xray 1' as varbinary(max))
WHERE [SerialNumber] = 2;

Удаление данных FILESTREAM

При удалении строки, содержащей поле FILESTREAM, вы также удаляете базовые файлы файловой системы. Единственным способом удаления строки и, следовательно, файла является использование инструкции Transact-SQL DELETE.

В следующем примере показано, как удалить строку и связанные с ней файлы файлов файловой системы.

DELETE Archive.dbo.Records
WHERE SerialNumber = 1;
GO

При выборе всех данных из таблицы dbo.Archive строка отсутствует. Вы больше не можете использовать связанный файл.

Замечание

Базовые файлы удаляются сборщиком мусора FILESTREAM.

См. также

Включение и настройка FILESTREAM
Избегайте конфликтов с операциями базы данных в приложениях FILESTREAM