Управление данными FILESTREAM с помощью языка Transact-SQL
В этом разделе описаны способы использования инструкций INSERT, UPDATE и DELETE Transact-SQL для управления данными FILESTREAM.
Примечание |
---|
В примерах, приведенных в данном разделе, необходимо наличие базы данных с поддержкой FILESTREAM и таблицы, созданной в разделах Как создать базу данных с поддержкой FILESTREAM и Как создать таблицу для хранения данных FILESTREAM. |
Вставка строки, содержащей данные FILESTREAM
Чтобы вставить строку в таблицу, которая поддерживает данные FILESTREAM, используйте инструкцию Transact-SQL INSERT. Значение, вставляемое в столбец FILESTREAM, может быть либо значением NULL, либо значением типа varbinary(max).
Вставка значения NULL
Следующий пример иллюстрирует порядок вставки значения NULL. Если значение FILESTREAM равно NULL, компонент Database Engine не создает файл в файловой системе.
INSERT INTO Archive.dbo.Records
VALUES (newid (), 1, NULL);
GO
Вставка записи с нулевой длиной
В следующем примере показано, как использовать инструкцию INSERT для создания записи с нулевой длиной. Это бывает полезно в случае, если нужно получить дескриптор файла, работать с которым предполагается с помощью API-интерфейсов Win32.
INSERT INTO Archive.dbo.Records
VALUES (newid (), 2,
CAST ('' as varbinary(max)));
GO
Создание файла данных
В следующем примере кода показывается, как использовать инструкцию INSERT для создания файла, содержащего данные. Компонент Database Engine преобразует строку 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.
Id |
SerialNumber |
Resume |
---|---|---|
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, также удаляются и связанные с ней файлы файловой системы. Единственным способом удаления строки и, как следствие, файла является использование инструкции DELETE языка Transact-SQL.
В следующем примере показано, как удалить строку и связанный с ней файл файловой системы.
DELETE Archive.dbo.Records
WHERE SerialNumber = 1;
GO
При выборке всех данных в таблице dbo.Archive строка удаляется. Связанный с ней файл больше нельзя использовать.
Примечание |
---|
Базовые файлы удалены сборщиком мусора FILESTREAM. |
См. также