пятница, 8 ноября 2013 г.

Чудесный баг в SQL Server 2008 R2 SSIS (Awesome bug in SQL 2008 R2 SSIS)

Симптомы: имеется совершенно правильно сконфигурированный Data Source в Data Flow Task, который, однако, не возвращает никаких данных. При ближайшем рассмотрении выясняются любопытные вещи:



1. SSIS выполняет sp_prepare для SQL statement, что выглядит примерно так:


и выполняет его, что выглядит так. Однако, можно видеть, что CPU, Reads, Writes отсутствуют:


Оказывается, что SSIS не может распознать наличия комментариев в SQL-statement и подвержен багу, подобному SQL-injection. Смотрите, что происходит в момент query validation:


SSIS включает FMTONLY для того, чтобы проверить метаданные, но из-за наличия комментария в этой строчке не может его выключить. При включенном FMTONLY данные не возвращаются.

Пока не видел, чтобы Microsoft обнаружил и/или исправил эту проблему. Пока этого не случилось, избегайте использовать комментарии в SSIS SQL Statements.

Комментариев нет: