Доступ к данным FILESTREAM с помощью Transact-SQL
В этом разделе описаны способы использования инструкций Transact-SQL INSERT, UPDATE и DELETE для управления данными FILESTREAM.
Примечание |
---|
Для примеров, приведенных в данном разделе, необходимы база данных с поддержкой FILESTREAM и таблица, которая была создана в разделах Создание базы данных с поддержкой FILESTREAM и Создание таблицы для хранения данных 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. |
[В начало]
См. также
Основные понятия
Включение и настройка FILESTREAM
Избегание конфликтов в операциях баз данных в приложениях FILESTREAM