Eu tenho uma coluna em um banco de dados Oracle contendo dados HTML com imagens incorporadas que resultam em alguns registros com mais de 2 GB de tamanho para essa coluna. Migrei com sucesso o restante do banco de dados para o SQL Server, exceto esta coluna CLOB. Com o SQL Server varchar(max) incapaz de lidar com qualquer coisa com tamanho superior a 2 GB, quais são minhas opções?
Normalmente, eu recomendaria usar o tipo de dados XML para armazenar HTML, mas também tem o limite de 2 GB. Isso deixa você com duas opções: FILESTREAM e FILETABLES . Esteja ciente, porém, de que essas duas opções exigem alguma configuração adicional no Sql Server e no banco de dados antes de poder usá-las.
As tabelas de arquivos são construídas em cima
FILESTREAM
e oferecem alguns benefícios se você precisar acessar os arquivos usando chamadas de API padrão do Windows. As tabelas de arquivos geralmente são transparentes para o consumidor e mais fáceis de integrar em seu aplicativo, mas não têm acesso transacional. Isso significa que os arquivos podem ser removidos de fora do contexto do Sql Server, o que pode ser indesejável.FILESTREAM
no entanto, deve ser feito em um contexto de transação e, portanto, impede que qualquer pessoa (com exceção de administradores/pessoas com permissão explícita para aFILESTREAM
pasta) os remova fora do Sql Server. Eles não têm o limite de 2 GB que lhe permitirá contornar o problema que você está enfrentando atualmente; no entanto, acessar os dados pode ser um pouco mais complicado. Felizmente, a documentação faz um trabalho bastante decente ao explicar como realizar operações CRUD comFILESTREAM
dados.Se eu tivesse que escolher um, com base no que você forneceu acima, eu escolheria,
FILESTREAM
pois isso oferecerá melhor consistência e controle sobre seus dados.