SnowConvert AI - SSIS Conversion Issues¶
This section provides detailed documentation for all Error, Warning, and Information (EWI) messages that SnowConvert may generate during SSIS to dbt conversion.
For assistance with any EWI, you can use the SnowConvert Migration Assistant to get AI-powered explanations and actionable solutions, or contact snowconvert-support@snowflake.com for additional support.
SSC-EWI-SSIS0001¶
SSIS component requires manual implementation.
Severity¶
Critical
Description¶
This EWI is added when an SSIS component cannot be automatically converted to Snowflake SQL or dbt. The component is not supported by SnowConvert’s conversion engine and requires manual implementation. This typically occurs with custom components, third-party transformations, or components that have no direct equivalent in Snowflake’s architecture.
The conversion will place a placeholder comment in the generated code indicating where manual intervention is required.
Converted Code¶
-- !!!RESOLVE EWI!!! /*** SSC-EWI-SSIS0001 - SSIS COMPONENT IS NOT SUPPORTED BY SNOWCONVERT ***/!!!
-- Component: ScriptComponent1 requires manual implementation
Best Practices¶
Review the original SSIS component’s logic and data transformation requirements
If possible, implement equivalent functionality using Snowflake SQL, dbt models, or Snowflake stored procedures
Use the SnowConvert Migration Assistant to get AI-powered explanations and actionable solutions for this EWI
If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-SSIS0002¶
SSIS expression requires manual translation to Snowflake SQL.
Severity¶
High
Description¶
This EWI is generated when an SSIS expression contains syntax that cannot be automatically translated to Snowflake SQL. This commonly occurs with:
Complex nested expressions with unsupported functions
SSIS-specific functions without direct Snowflake equivalents
Malformed expressions (e.g., unbalanced parentheses)
Expressions using unsupported operators or type conversions
The generated code will include a placeholder where the expression should be manually translated.
Converted Code¶
CREATE OR REPLACE TASK public.package_simple_expression
WAREHOUSE=DUMMY_WAREHOUSE
AS
BEGIN
LET User_message VARCHAR := public.GetControlVariableUDF('User_message', 'package_simple_expression') :: VARCHAR;
!!!RESOLVE EWI!!! /*** SSC-EWI-SSIS0002 - SSIS EXPRESSION CANNOT BE CONVERTED TO SNOWFLAKE SQL: @[User::message] = UPPER( @[User::message] || ***/!!!
;
CALL public.UpdateControlVariable('User_message', 'package_simple_expression', TO_VARIANT(:User_message));
END;
Best Practices¶
Carefully review the original SSIS expression logic
If possible, manually translate the expression to valid Snowflake SQL syntax
Use the SnowConvert Migration Assistant to get AI-powered explanations and actionable solutions for this EWI
If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-SSIS0003¶
Embedded SQL requires manual translation to Snowflake syntax.
Severity¶
High
Description¶
This EWI is added when SQL statements embedded in SSIS components (such as OLE DB Source, Lookup, or Execute SQL Task) cannot be automatically converted to Snowflake syntax. This typically occurs when:
The source SQL dialect has syntax incompatible with Snowflake
The SQL contains system-specific functions or objects
The SQL uses features not supported in Snowflake
Converted Code¶
-- !!!RESOLVE EWI!!! /*** SSC-EWI-SSIS0003 - EMBEDDED SQL CANNOT BE CONVERTED FROM SQL SERVER TO SNOWFLAKE SQL ***/!!!
-- Original SQL: SELECT CustomerID, CustomerName FROM DimCustomer
-- WHERE CONVERT(VARCHAR, LastModified, 101) > '01/01/2020'
SSC-EWI-SSIS0004¶
SSIS Control Flow Element requires manual implementation.
Severity¶
High
Description¶
This EWI is generated when an SSIS control flow element cannot be converted to Snowflake scripting. This can occur with various unsupported control flow tasks and containers, including but not limited to:
Common Scenarios:
Control flow task types not yet supported by SnowConvert
Container iteration logic that cannot be directly translated
Complex control flow patterns without Snowflake equivalents
Control flow elements with configurations that cannot be mapped to Snowflake
The specific control flow element that triggered this EWI will be identified in the error message, and manual implementation is required using Snowflake’s procedural SQL constructs.
Common Cases¶
For Loop Container¶
For Loop containers with iteration logic (initialization, condition, increment) that cannot be automatically converted.
Converted Code:
CREATE OR REPLACE TASK simpleforloop_package_for_loop_container
WAREHOUSE=DUMMY_WAREHOUSE
AFTER public.simpleforloop_package_execute_sql_task
AS
!!!RESOLVE EWI!!! /*** SSC-EWI-SSIS0004 - SSIS CONTROL FLOW ELEMENT 'FORLOOP CONTAINER ITERATION LOGIC' CANNOT BE CONVERTED TO SNOWFLAKE SCRIPTING. ***/!!!
BEGIN
-- Loop body tasks here
END;
Best Practices for For Loop:
Convert to Snowflake’s WHILE loops with explicit counter variables
ForEach Loop Container (Non-File Enumerator)¶
ForEach Loop containers with enumerators other than the File Enumerator (which has its own EWI SSC-EWI-SSIS0014).
Converted Code:
!!!RESOLVE EWI!!! /*** SSC-EWI-SSIS0004 - SSIS CONTROL FLOW ELEMENT 'FOREACH CONTAINER ITERATION LOGIC' CANNOT BE CONVERTED TO SNOWFLAKE SCRIPTING. ***/!!!
FOR record IN cursor DO
-- Loop body tasks here
END FOR;
Best Practices for ForEach Loop:
Identify the enumerator type (ADO, NodeList, Variable, etc.)
Other Unsupported Control Flow Elements¶
Other control flow tasks and elements that may generate this EWI include:
Custom tasks without Snowflake equivalents
Third-party control flow elements
Certain configurations of standard tasks
Complex event handlers
SSC-EWI-SSIS0005¶
Execute Package Task converted to asynchronous EXECUTE TASK.
Severity¶
High
Description¶
This EWI indicates that an SSIS Execute Package Task has been converted to a Snowflake TASK, which executes asynchronously by default. In SSIS, Execute Package Task runs synchronously within the parent package’s execution context. In Snowflake, EXECUTE TASK triggers the task to run asynchronously, which may affect orchestration logic, error handling, and variable passing between packages.
Converted Code¶
CREATE OR REPLACE TASK parent_package_execute_package_task
WAREHOUSE=DUMMY_WAREHOUSE
AFTER public.parent_package_previous_task
AS
EXECUTE TASK public.childpackage_child_package;
-- !!!RESOLVE EWI!!! /*** SSC-EWI-SSIS0005 - THIS TASK RUNS ASYNCHRONOUSLY. Original SSIS Execute Package Task ran synchronously. ***/!!!
SSC-EWI-SSIS0006¶
Execute Package Task variable bindings require manual implementation.
Severity¶
High
Description¶
This EWI is generated when an Execute Package Task contains variable bindings (parameter mappings between parent and child packages) that could not be automatically converted. SSIS allows parent packages to pass variable values to child packages through parameter bindings. This mechanism requires manual implementation in Snowflake.
Converted Code¶
-- !!!RESOLVE EWI!!! /*** SSC-EWI-SSIS0006 - SSIS EXECUTE PACKAGE TASK VARIABLE BINDINGS WERE NOT CONVERTED. ***/!!!
-- Original binding: ParentVariable -> ChildParam
-- Implement parameter passing mechanism manually
EXECUTE TASK public.childpackage;
SSC-EWI-SSIS0007¶
Property expressions require manual implementation.
Severity¶
High
Description¶
This EWI is generated when an SSIS executable (task or container) uses property expressions to dynamically set properties at runtime, and these expressions could not be converted. Property expressions in SSIS allow dynamic configuration of task properties using expressions based on variables or parameters. In Snowflake, similar dynamic behavior must be implemented manually.
Converted Code¶
-- !!!RESOLVE EWI!!! /*** SSC-EWI-SSIS0007 - SSIS EXECUTABLE CONTAINS PROPERTY EXPRESSIONS that were not converted. ***/!!!
-- Original property expression: SqlStatementSource = @[User::SqlQuery]
-- Implement dynamic SQL logic manually
Best Practices¶
Use EXECUTE IMMEDIATE for dynamic SQL execution
Validate dynamically constructed SQL to prevent injection risks
Use the SnowConvert Migration Assistant to get AI-powered explanations and actionable solutions for this EWI
If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-SSIS0008¶
Execute Package Task references external package not in conversion scope.
Severity¶
Medium
Description¶
This EWI indicates that an Execute Package Task references a package that exists outside the current project or conversion scope. Ensure all dependent packages are available for the migration process.
Converted Code¶
-- !!!RESOLVE EWI!!! /*** SSC-EWI-SSIS0008 - EXECUTE PACKAGE TASK REFERENCES AN EXTERNAL PACKAGE ***/!!!
-- External package: C:\ExternalPackages\UtilityPackage.dtsx
-- Ensure this package is converted and accessible
EXECUTE TASK public.utilitypackage;
Best Practices¶
Create an inventory of all external package dependencies
If possible, include external packages in the conversion scope
Use the SnowConvert Migration Assistant to get AI-powered explanations and actionable solutions for this EWI
If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-SSIS0009¶
Unexpected error during component conversion.
Severity¶
High
Description¶
This EWI indicates that an unexpected error occurred during the conversion of a specific component. This is typically a rare occurrence and may be caused by:
Corrupted package metadata
Unusual component configuration
Edge cases not covered by the converter
The component may have been partially converted. Review the generated code and contact support if the issue persists.
Converted Code¶
-- !!!RESOLVE EWI!!! /*** SSC-EWI-SSIS0009 - UNEXPECTED EXCEPTION CONVERTING COMPONENT. ***/!!!
-- Review component configuration and generated code
SSC-EWI-SSIS0010¶
Multiple models write to the same destination table.
Severity¶
High
Description¶
This EWI is generated when multiple SSIS components write to the same destination table, resulting in multiple dbt models targeting the same table. This typically occurs when:
Multiple Data Flow Tasks write to the same table
Different packages in the same conversion write to the same table
The same table is used as a destination in multiple transformations
Converted Code¶
-- Model 1: models/factsales.sql
-- Model 2: models/factsales_1.sql (automatically renamed)
-- !!!RESOLVE EWI!!! /*** SSC-EWI-SSIS0010 - A model associated with table 'FactSales' is already defined. ***/!!!
Best Practices¶
Review duplicate destination references in your packages
If possible, consolidate multiple writes to the same table into a single model
Use the SnowConvert Migration Assistant to get AI-powered explanations and actionable solutions for this EWI
If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-SSIS0011¶
Result binding configured for non-SELECT statement.
Severity¶
High
Description¶
This EWI is generated when an Execute SQL Task has a result binding configured (to capture query results into a variable), but the SQL statement is not a SELECT query. Result bindings only work with SELECT statements that return result sets. If the SQL statement is an INSERT, UPDATE, DELETE, or procedural statement, the result binding cannot be applied and must be manually addressed.
For non-query statements, consider using OUTPUT parameters or separate SELECT statements to retrieve values.
Converted Code¶
-- !!!RESOLVE EWI!!! /*** SSC-EWI-SSIS0011 - RESULT BINDING IS CONFIGURED FOR NON-QUERY STATEMENT. RESULT BINDING ONLY WORKS WITH SELECT QUERIES. ***/!!!
DELETE FROM Customers WHERE CustomerId = 1;
-- Original result binding: RowCount -> User::DeletedRows
Best Practices¶
Use separate SELECT statements to retrieve values after DML operations
Use the SnowConvert Migration Assistant to get AI-powered explanations and actionable solutions for this EWI
If you need more support, you can email us at snowconvert-support@snowflake.com
SSC-EWI-SSIS0012¶
XML result set requires manual implementation.
Severity¶
High
Description¶
This EWI is generated when an Execute SQL Task is configured to return results as XML, which is not directly supported in the conversion. SnowConvert supports SINGLEROW and FULLRESULTSET result types, but XML result sets require manual implementation.
Converted Code¶
-- !!!RESOLVE EWI!!! /*** SSC-EWI-SSIS0012 - XML RESULT SET TYPE IS NOT SUPPORTED. ONLY SINGLEROW AND FULLRESULTSET RESULT SET TYPES ARE SUPPORTED. ***/!!!
-- Original SQL: SELECT * FROM Customers FOR XML AUTO
-- Convert to supported result type or use JSON format
SSC-EWI-SSIS0013¶
Complex property expression requires manual implementation.
Severity¶
High
Description¶
This EWI is generated when a property expression in an SSIS task contains patterns that cannot be automatically converted. SnowConvert supports simple property expressions such as:
Single variable references:
@[User::VariableName]Simple string concatenation:
"SELECT * FROM " + @[User::TableName]
More complex patterns involving multiple operations, nested expressions, or complex string manipulation require manual conversion.
Converted Code¶
-- !!!RESOLVE EWI!!! /*** SSC-EWI-SSIS0013 - PROPERTY EXPRESSION FOR SQLSTATEMENTSOURCE CONTAINS UNSUPPORTED PATTERNS. ONLY SINGLE VARIABLE REFERENCES OR SIMPLE STRING CONCATENATION WITH LITERALS AND VARIABLE REFERENCES IS SUPPORTED. ***/!!!
-- Implement complex expression logic manually
SSC-EWI-SSIS0014¶
ForEach File Enumerator requires Snowflake stage mapping.
Severity¶
High
Description¶
This EWI is generated when a ForEach File Enumerator Container is used to iterate over files in a folder. In SSIS, this references local or network file system paths. In Snowflake, files must be staged in Snowflake internal or external stages. You must:
Map the folder path to a Snowflake stage
Replace the
<STAGE_PLACEHOLDER>with your actual stage nameEnsure files are uploaded to the stage before execution
Implement the file enumeration logic using Snowflake’s LIST command
Converted Code¶
-- !!!RESOLVE EWI!!! /*** SSC-EWI-SSIS0014 - THE FOLDER PATH REQUIRES MANUAL MAPPING TO A SNOWFLAKE STAGE. ***/!!!
-- Original folder: C:\Data\InputFiles\
-- Replace <STAGE_PLACEHOLDER> with your stage name
-- Example: @my_stage/input_files/
DECLARE
file_cursor CURSOR FOR
SELECT relative_path
FROM TABLE(RESULT_SCAN(
SELECT system$list_files('<STAGE_PLACEHOLDER>')
))
WHERE relative_path LIKE '%.csv';
Best Practices¶
Create a Snowflake stage for file storage
Upload files to the stage using SnowSQL, Snowpipe, or cloud storage integration
Update the stage reference in the generated code
Test file enumeration with actual staged files
Use Snowflake’s LIST command to verify files are accessible
Document stage naming conventions for your project
Use the SnowConvert Migration Assistant to get AI-powered explanations and actionable solutions for this EWI
If you need more support, you can email us at snowconvert-support@snowflake.com