Gerenciando dados de FILESTREAM usando o Transact-SQL
Este tópico descreve como usar as instruções INSERT, UPDATE e DELETE do Transact-SQL 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 Como criar um banco de dados habilitado para FILESTREAM e Como criar uma tabela para armazenar dados de FILESTREAM. |
Inserindo uma linha contendo dados de FILESTREAM
Para adicionar uma linha a uma tabela que suporte dados de FILESTREAM, use a instrução INSERT de Transact-SQL. Ao inserir dados em uma coluna de FILESTREAM, é possível 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ê selecionar todos os dados da tabela Archive.dbo.Records, os resultados são similares aos exibidos na tabela a seguir. Porém, a coluna Id conterá GUIDs diferente.
Id |
SerialNumber |
Resumo |
---|---|---|
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; talvez você não deseje fazer isso quando tiver grandes quantidades de fluxo de dados em 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. O único modo de excluir uma linha, e portanto o arquivo, é usar a instrução DELETE do Transact-SQL.
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 tabeladbo.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