Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Descreve como carregar ou migrar arquivos para FileTables.
Carregar ou migrar arquivos para uma FileTable
O método escolhido para carregar ou migrar arquivos para uma FileTable depende de onde os arquivos estão armazenados no momento.
| Localização atual dos arquivos | Opções de migração |
|---|---|
| Atualmente, os arquivos são armazenados no sistema de arquivos. O SQL Server não tem conhecimento dos arquivos. |
Como uma FileTable aparece como uma pasta no sistema de arquivos do Windows, você pode carregar facilmente arquivos em uma nova FileTable usando qualquer um dos métodos disponíveis para mover ou copiar arquivos. Esses métodos incluem o Windows Explorer, opções de linha de comando, incluindo xcopy e robocopy, e scripts ou aplicativos personalizados. Não é possível converter uma pasta existente em uma FileTable. |
| Atualmente, os arquivos são armazenados no sistema de arquivos. O SQL Server contém uma tabela de metadados que contém ponteiros para os arquivos. |
O primeiro passo é mover ou copiar os arquivos usando um dos métodos mencionados anteriormente. A segunda etapa é atualizar a tabela existente de metadados para apontar para o novo local dos arquivos. Para obter mais informações, consulte Exemplo: Migrar ficheiros do sistema de ficheiros para um FileTable neste artigo. |
Como: Carregar arquivos em uma FileTable
Você pode usar os seguintes métodos para carregar arquivos em uma FileTable:
Arraste e solte arquivos das pastas de origem para a nova pasta FileTable no Windows Explorer.
Use opções de linha de comando, como
move,copy,xcopyourobocopyno prompt de comando ou em um arquivo em lotes ou script.Escreva um aplicativo personalizado para mover ou copiar os arquivos em C# ou Visual Basic .NET. Chame métodos do namespace
System.IO.
Exemplo: Migrar arquivos do sistema de arquivos para uma FileTable
Nesse cenário, seus arquivos são armazenados no sistema de arquivos e você tem uma tabela de metadados no SQL Server que contém ponteiros para os arquivos. Você deseja mover os arquivos para uma TabelaArquivo e, em seguida, substituir o caminho UNC original de cada ficheiro nos metadados pelo caminho UNC da TabelaArquivo. A função GetPathLocator ajuda você a atingir esse objetivo.
Para este exemplo, suponha que há uma tabela de banco de dados existente, PhotoMetadata, que contém dados sobre fotografias. Esta tabela tem uma coluna UNCPath do tipo varchar(512) que contém o caminho UNC real para um arquivo .jpg.
Para migrar os arquivos de imagem do sistema de arquivos para uma FileTable, você precisa fazer o seguinte:
Crie uma nova FileTable para armazenar os arquivos. Este exemplo usa o nome da tabela,
dbo.PhotoTable, mas não mostra o código para criar a tabela.Use xcopy ou uma ferramenta semelhante para copiar os arquivos
.jpg, com sua estrutura de diretório, para o diretório raiz da FileTable.Corrija os metadados na tabela
PhotoMetadata, usando código semelhante ao exemplo a seguir:
-- Add a path locator column to the PhotoMetadata table.
ALTER TABLE PhotoMetadata ADD pathlocator HIERARCHYID;
-- Get the root path of the Photo directory on the File Server.
DECLARE @UNCPathRoot VARCHAR(100) = '\\RemoteShare\Photographs';
-- Get the root path of the FileTable.
DECLARE @FileTableRoot VARCHAR(1000);
SELECT @FileTableRoot = FileTableRootPath('dbo.PhotoTable');
-- Update the PhotoMetadata table.
-- Replace the File Server UNC path with the FileTable path.
UPDATE PhotoMetadata
SET UNCPath = REPLACE(UNCPath, @UNCPathRoot, @FileTableRoot);
-- Update the pathlocator column to contain the pathlocator IDs from the FileTable.
UPDATE PhotoMetadata
SET pathlocator = GetPathLocator(UNCPath);
Carregar arquivos em massa em uma FileTable
Uma FileTable se comporta como uma tabela normal para operações em massa. Uma FileTable tem restrições definidas pelo sistema que garantem que a integridade do namespace de arquivo e diretório seja mantida. Essas restrições devem ser verificadas nos dados carregados em massa na FileTable. Como algumas operações de inserção em massa permitem que as restrições de tabela sejam ignoradas, os requisitos a seguir são impostos.
As operações de carregamento em massa que impõem restrições podem ser executadas em uma FileTable como em qualquer outra tabela. Esta categoria inclui as seguintes operações:
-
BCP com
CHECK_CONSTRAINTScláusula. -
BULK INSERTcomCHECK_CONSTRAINTScláusula. -
INSERT INTO ... SELECT * FROM OPENROWSET(BULK ...)semIGNORE_CONSTRAINTScláusula.
-
BCP com
As operações de carregamento em massa que não impõem restrições falham, a menos que as restrições definidas pelo sistema FileTable estejam desabilitadas. Esta categoria inclui as seguintes operações:
-
BCP sem
CHECK_CONSTRAINTScláusula. -
BULK INSERTsem cláusulaCHECK_CONSTRAINTS. -
INSERT INTO ... SELECT * FROM OPENROWSET(BULK ...)com cláusulaIGNORE_CONSTRAINTS.
-
BCP sem
Como: Carregar arquivos em massa em uma FileTable
Você pode usar vários métodos para carregar arquivos em massa em uma FileTable:
Faça a chamada com a cláusula CHECK_CONSTRAINTS.
Desative o namespace FileTable e chame sem a cláusula CHECK_CONSTRAINTS. Em seguida, reative o namespace FileTable.
Para obter informações sobre como desabilitar as restrições FileTable, consulte Manage FileTables.
Como: Desativar restrições FileTable para carregamento em massa
Para carregar arquivos em massa em uma FileTable sem a sobrecarga de impor as restrições definidas pelo sistema, você pode desativar temporariamente as restrições. Para obter mais informações, consulte Manage FileTables.