Tabelas existentes com binários para usar o filestream

3

Eu tenho algumas tabelas para as quais desejo usar o armazenamento de arquivos.

Essas tabelas já contêm dados binários e possuem rowguids. No entanto, no momento em que eles foram criados, as tabelas não foram adicionadas a um grupo de arquivos habilitado para o fluxo de arquivos.

Qual é a melhor maneira de ter essas tabelas usando o fluxo de vídeo neste momento? Preciso largar + recriar as tabelas e migrar os dados? Existe uma maneira mais fácil?

O banco de dados já tem o filestream ativado e há outras tabelas que os estão usando.

    
por user1098487 01.10.2012 / 22:35

1 resposta

6

Você não precisa adicionar a tabela inteira a um grupo de arquivos de fluxo de arquivos e, na verdade, não pode, porque somente colunas de filestream são armazenadas no armazenamento de arquivos; outras colunas na mesma tabela vão para o armazenamento normal.

Primeiro de tudo, você precisa escolher qual grupo de arquivos filestream deseja usar para armazenar os dados de fluxo da tabela:

ALTER TABLE YourTable SET (FILESTREAM_ON = FSGroup)

Você pode simplesmente adicionar colunas de fluxo de arquivos à tabela:

ALTER TABLE YourTable ADD YourColumn varbinary(max) FILESTREAM

No entanto, você não pode ALTERAR uma coluna existente para começar a usar o filestream se ele não tiver sido definido dessa maneira; mas você pode criar uma nova coluna, copiar os dados e depois soltar a coluna antiga e renomear a nova:

ALTER TABLE YourTable ADD NewColumn varbinary(max) FILESTREAM
UPDATE YourTable SET NewColumn = OldColumn
ALTER TABLE YourTable DROP COLUMN OldColumn
EXEC sp_rename 'NewColumn','OldColumn','COLUMN'
    
por 01.10.2012 / 23:19