I had the extreme pleasure recently to extract some data out of an Oracle database. I wrote the source query in Toad, where it executed successfully. I created my SSIS package, added the dataflow and an OLE DB Source component. I copy pasted the query into the editor and tested it using the preview. Which failed. Always a good start. The error message was useful, as always:
However, if I went to the columns tab of the source editor, all columns (and their metadata) were there. Hmmm, so SSIS could at least parse the query. Which, again, works just fine when executed directly on the Oracle database. When running the SSIS package, the error message changed to the following:
Source: “OraOLEDB” Hresult: 0x80040E14 Description: “ORA-00907: missing right parenthesis”.
Plot twist: there’s nothing wrong with the parenthesizes in the query. At this point I was ready to set my laptop on fire, but instead I decided to soldier on. After searching online and trying out some theories, it turns out a comment in the WHERE clause was the culprit. Something like this:
... WHERE 1 = 1 --AND mydatecolumn = '01jan2021' ...
For whatever reason, SSIS has issues parsing this. The explanation is that SSIS probably puts everything on one line, thus effectively commenting out the rest of the query. I removed the comment and lo and behold, the dataflow ran without issues. Another solution would be to use block comments using /* */ instead of line comments.
------------------------------------------------
Do you like this blog post? You can thank me by buying me a beer 🙂