Desculpe se isso foi respondido em outro lugar, mas não consegui encontrar nada aqui ou online.
O openrowset tem um limite de tamanho de arquivo? Estou tentando escrever um procedimento armazenado, parte do qual verifica se existem determinados caracteres no arquivo e, se existirem, eu teria que pular para a próxima seção do procedimento armazenado. Até agora, simplesmente inseri em massa o arquivo inteiro em uma tabela de uma coluna e fiz:
IF(SELECT COUNT(*) FROM #fulltable WHERE fulltable LIKE '%}%')>0 GOTO NEXTSECTION
IF(SELECT COUNT(*) FROM #fulltable WHERE fulltable LIKE '%~%')>0 GOTO NEXTSECTION
IF(SELECT COUNT(*) FROM #fulltable WHERE fulltable LIKE '%#%')>0 GOTO NEXTSECTION
É confiável, mas muito lento ao lidar com arquivos grandes (às vezes com mais de 10 GB). Estou pensando que a consulta abaixo seria mais rápida para arquivos grandes
DECLARE @FILE NVARCHAR(MAX)
select @FILE = BULKCOLUMN from (
select * from openrowset(BULK N'filpath', single_clob) [a]
)a
IF(SELECT IIF(@FILE LIKE '%{%',1,0)) = 1 GOTO NEXTSECTION
IF(SELECT IIF(@FILE LIKE '%}%',1,0)) = 1 GOTO NEXTSECTION
IF(SELECT IIF(@FILE LIKE '%~%',1,0)) = 1 GOTO NEXTSECTION
IF(SELECT IIF(@FILE LIKE '%@%',1,0)) = 1 GOTO NEXTSECTION
IF(SELECT IIF(@FILE LIKE '%£%',1,0)) = 1 GOTO NEXTSECTION
Mas, como eu digo, a inserção em massa é confiável e eu odiaria arriscar o arquivo ser truncado ao usar OPENROWSET se houver algum tipo de limite de tamanho de arquivo.
Qualquer conselho sobre o assunto seria apreciado.