Parece que algum programa estava colocando espaços em branco em campos de texto em vez de deixá-los como nulos, o que era suposto fazer ..
A resolução era copiar os dados para uma nova tabela (usando INSERT
em vez do SSIS), mas com uma condição em cada campo de texto no SELECT
assim:
CASE datalength([col1]) WHEN 0 THEN NULL ELSE [col1] END AS [col1]
Isso eliminou os campos de texto vazios que resolveram o problema - obviamente, os dados precisam ser copiados novamente, mas eu posso fazer apenas TRUNCATE TABLE [tablename]
e, em seguida, INSERT INTO [tablename] SELECT * FROM [copyoftable]
Eu acho que pode ser hora de explicar sobre a existência de varchar (MAX) para algumas pessoas.