Eu vim aqui antes de procurar uma solução para inserir caracteres especiais em massa. Não gostei da solução alternativa com UTF-16 (que dobraria o tamanho do arquivo csv). Descobri que você definitivamente PODE e é muito fácil, você não t precisa de um arquivo de formato. Esta resposta é para outras pessoas que estão procurando o mesmo, já que não parece estar bem documentado em nenhum lugar, e acredito que esse seja um problema muito comum para pessoas que não falam inglês. A solução é:basta adicionar CODEPAGE='65001' dentro da instrução with da inserção em massa. (65001=número da página de código para UTF-8). Pode não funcionar para todos os caracteres unicode como sugerido por Michael O, mas pelo menos funciona perfeitamente para latim-extended, grego e cirílico, provavelmente muitos outros também.
Nota:A documentação do MSDN diz que utf-8 não é suportado, não acredite, para mim isso funciona perfeitamente no SQL Server 2008, mas não tentei outras versões.
por exemplo.:
BULK INSERT #myTempTable
FROM 'D:\somefolder\myCSV.txt'+
WITH
(
CODEPAGE = '65001',
FIELDTERMINATOR = '|',
ROWTERMINATOR ='\n'
);
Se todos os seus caracteres especiais estiverem em 160-255 (iso-8859-1 ou windows-1252), você também poderá usar:
BULK INSERT #myTempTable
FROM 'D:\somefolder\myCSV.txt'+
WITH
(
CODEPAGE = 'ACP',
FIELDTERMINATOR = '|',
ROWTERMINATOR ='\n'
);