Compartilhar via


Acessar dados FILESTREAM com Transact-SQL

Este tópico descreve como usar as instruções TRANSact-SQL INSERT, UPDATE e DELETE para gerenciar dados FILESTREAM.

Observação

Os exemplos citados neste tópico exigem o banco de dados e a tabela habilitados para FILESTREAM criados em Criar um banco de dados habilitado para FILESTREAM e Criar uma tabela para armazenar dados de FILESTREAM.

Inserindo uma linha contendo dados de FILESTREAM

Para adicionar uma linha a uma tabela que dá suporte a dados FILESTREAM, use a instrução INSERT Transact-SQL. Ao inserir dados em uma coluna FILESTREAM, você pode inserir NULL ou um valor varbinary(max).

Inserindo NULL

O exemplo a seguir mostra como inserir NULL. Quando o valor de FILESTREAM for NULL, o Mecanismo de Banco de Dados não criará um arquivo no sistema de arquivos.

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

Inserindo um registro de comprimento zero

O exemplo a seguir mostra como usar INSERT para criar um registro com comprimento zero, o que é útil quando você quer obter um identificador de arquivo, mas manipulará o arquivo usando APIs de Win32.

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

Criando um arquivo de dados

O exemplo a seguir mostra como usar o objeto INSERT para criar um arquivo que contenha dados. O Mecanismo de Banco de Dados converte a cadeia de caracteres Seismic Data para um valor varbinary(max) . O FILESTREAM criará o arquivo Windows se ele ainda não existir. Depois, os dados serão adicionados ao arquivo de dados.

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

Quando você seleciona todos os dados do Archive.dbo.Records table, os resultados são semelhantes aos resultados mostrados na tabela a seguir. Porém, a coluna Id conterá GUIDs diferente.

ID SerialNumber Retomar
C871B90F-D25E-47B3-A560-7CC0CA405DAC 1 NULL
F8F5C314-0559-4927-8FA9-1535EE0BDF50 2 0x
7F680840-B7A4-45D4-8CD5-527C44D35B3F 3 0x536569736D69632044617461

Atualizando dados de FILESTREAM

Você pode usar o Transact-SQL para atualizar os dados no arquivo do sistema de arquivos; no entanto, talvez você não queira fazer isso quando precisar transmitir grandes quantidades de dados para um arquivo.

O exemplo a seguir substitui qualquer texto no registro do arquivo pelo texto Xray 1.

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

Excluindo dados de FILESTREAM

Ao excluir uma linha que contém um campo de FILESTREAM, você também exclui seus arquivos subjacentes do sistema de arquivos. A única maneira de excluir uma linha e, portanto, o arquivo, é usar a instrução TRANSact-SQL DELETE.

O exemplo a seguir mostra como excluir uma linha e seus arquivos associados do sistema de arquivos.

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

Quando você selecionar todos os dados da tabela dbo.Archive , a linha será excluída. Não é mais possível usar o arquivo associado.

Observação

Os arquivos subjacentes são removidos pelo coletor de lixo do FILESTREAM.

Consulte Também

Habilitar e configurar o FILESTREAM
Evitar conflitos com operações de banco de dados em aplicativos de FILESTREAM