Skip to end of banner
Go to start of banner

Azure SQL - Execute

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 52 Next »

In this article

Overview

You can use the Azure SQL - Execute Snap to execute single simple DML (SELECT, INSERT, UPDATE, DELETE) type statements.

  • This Snap works only with single queries.

  • For the comprehensive scripting functionality offered by the various databases, we recommend you to use the stored procedure functionality offered by their chosen database in the Stored Procedure Snap.

Snap Type

The Azure SQL Execute Snap is a WRITE-type Snap that writes the results of the executed SQL queries.

Prerequisites

  • Valid Azure Synapse SQL Account.

  • Access to Azure Synapse SQL and the required permissions to execute T-SQL queries.

Support for Ultra Pipelines

Works in Ultra Pipelines.

Supported Versions

This Snap supports SQL Server 2008 or higher version.

Limitations

When the SQL statement property is an expression, the pipeline parameters are shown in the suggestions list, but not the input schema.

Known Issues

None.

Behavior Change

  • In 4.26, when the stored procedures were called using the Database Execute Snaps, the queries were treated as write queries instead of read queries. So the output displayed message and status keys after executing the stored procedure.
    In 4.27, all the Database Execute Snaps run stored procedures correctly, that is, the queries are treated as read queries. The output now displays message key, and OUT params of the procedure (if any). The status key is not displayed.

  • If the stored procedure has no OUT parameters then only the message key is displayed with value success.

If you have any existing Pipelines that are mapped with status key or previous description then those Pipelines will fail. So, you might need to revisit your Pipeline design.


Snap Views

Type

Format

Number of Views

Examples of Upstream and Downstream Snaps

Description

Input 

Document

  • Min: 0

  • Max: 1

  • Mapper

  • Copy

  • JSON Generator

  • The dynamic variables used in the execute query can be defined by providing values upstream.

  • If the input view is defined, then the where clause substitutes incoming values for a specific query.

Output

Document

 

  • Min: 0

  • Max: 1

  • JSON Formatter

  • Any document processing Snap can be used downstream.

  • The Snap produces documents in the output view.

  • Database Write Snaps output all records of a batch (as configured in your account settings) to the error view if the write fails during batch processing.

Error

Error handling is a generic way to handle errors without losing data or failing the Snap execution. You can handle the errors that the Snap might encounter when running the Pipeline by choosing one of the following options from the When errors occur list under the Views tab:

  • Stop Pipeline Execution: Stops the current Pipeline execution when the Snap encounters an error.

  • Discard Error Data and Continue: Ignores the error, discards that record, and continues with the remaining records.

  • Route Error Data to Error View: Routes the error data to an error view without stopping the Snap execution.

Learn more about Error handling in Pipelines.

Snap Settings

  • Asterisk ( * ): Indicates a mandatory field.

  • Suggestion icon ((blue star)): Indicates a list that is dynamically populated based on the configuration.

  • Expression icon ((blue star) ): Indicates the value is an expression (if enabled) or a static value (if disabled). Learn more about Using Expressions in SnapLogic.

  • Add icon ( (blue star) ): Indicates that you can add fields in the field set.

  • Remove icon ( (blue star)): Indicates that you can remove fields from the field set.

Field

Field Type

Description

Label

Default Value: Azure SQL - Execute
Example: Azure SQL - Execute

String

Specify a unique name for the Snap.

SQL statement*

Default Value: N/A
Example: select * from “dob”, “Persons”

String/Expression

Specifiy the SQL statement to execute on the server. There are two possible scenarios that you encounter when working with SQL statements in SnapLogic. 

Learn more about scenarios to execute your SQL statements.

  • We recommend you to add a single query in the SQL Statement field.

  • Valid JSON paths that are defined in the WHERE clause for queries/statements will be substituted with values from an incoming document. Documents will be written to the error view if the document is missing a value to be substituted into the query/statement.

  • If a SELECT query is executed, the query's results are merged into the incoming document and any existing keys will have their values overwritten. On the other hand, the original document is written if there are no results from the query. If an output view is available and an UPDATE/INSERT/MERGE/DELETE statement was executed, then the original document that was used to create the statement will be output with the status of the statement executed.

  • Be cautious when running your queries, because you can drop your database and lock tables while executing SQL statements.

  • When trying to access a column name that contains specific characters supported by Azure SQL, such as $, #, @, such field names should be enclosed in square brackets.

Query type

Default Value: Auto
Example: Read

Dropdown list/Expression

Select the type of query for your SQL statement (Read or Write).

When Auto is selected, the Snap tries to determine the query type automatically.
If the execution result of the query is not as expected, you can change the query type to Read or Write.

Pass through

Default Value: Selected

Checkbox

Select this checkbox to pass the input document to the output view under the key 'original'. This property applies only to the Execute Snaps with SELECT statement.

Ignore empty result


Default value: Deselected

Checkbox

Select this checkbox if you want the Snap to ignore empty fields and not write any document to the output view when a SELECT operation does not produce any result. If this property is not selected and the Pass through property is selected, the input document will be passed through to the output view.

Number of Retries

Default Value: 0
Example: 3

Integer/Expression

Specify the maximum number of retry attempts the Snap must make in case there is a network failure, and the Snap is unable to read the target file. The request is terminated if the attempts do not result in a response.

If the value is larger than 0, the Snap first downloads the target file into a temporary local file. If any error occurs during the download, the Snap waits for the time specified in the Retry interval and attempts to download the file again from the beginning. When the download is successful, the Snap streams the data from the temporary file to the downstream Pipeline. All temporary local files are deleted when they are no longer needed.

Retry Interval (Seconds)

Default Value: 1
Example: 10

Integer/Expression

Specify the time interval between two successive retry requests. A retry happens only when the previous attempt resulted in an exception. 

Auto commit

Default Value: Use account setting
Example: True

Dropdown list

Select one of the options for this property to override the state of the Auto commit property on the account. The Auto commit at the Snap-level has three values: TrueFalse, and Use account setting. The expected functionality for these modes are:

  •  True - The Snap will execute with auto-commit enabled regardless of the value set for Auto commit in the Account used by the Snap.

  •  False - The Snap will execute with auto-commit disabled regardless of the value set for Auto commit in the Account used by the Snap.

  • Use account setting - The Snap will execute with Auto commit property value inherited by the Account used by the Snap.

'Auto commit' may be enabled for certain use cases if PostgreSQL JDBC driver is used in either Redshift, PostgreSQL or Generic JDBC Snap. But the JDBC driver may cause out of memory issues when Select statements are executed. In those cases, “Auto commit" in Snap property should be set to ‘False’ and the Fetch size in the “Account setting" can be increased for optimal performance.

Behavior of DML Queries in Database Execute Snap when auto-commit is false

DDL queries used in the Database Execute Snap will be committed by the Database itself, regardless of the Auto-commit setting.
When Auto commit is set to false for the DML queries, the commit is called at the end of the Snap's execution.
The Auto commit needs to be true in a scenario where the downstream Snap does depend on the data processed on an Upstream Database Execute Snap containing a DML query.
When the Auto commit is set to the Use account setting on the Snap, the account level commit needs to be enabled.

Snap Execution

Dropdown list

Select one of the three modes in which the Snap executes. Available options are:

  • Validate & Execute: Performs limited execution of the Snap, and generates a data preview during Pipeline validation. Subsequently, performs full execution of the Snap (unlimited records) during Pipeline runtime.
  • Execute only: Performs full execution of the Snap during Pipeline execution without generating preview data.
  • Disabled: Disables the Snap and all Snaps that are downstream from it.


Additional Information

Scenarios to successfully execute your SQL statements

Scenario 1: Executing SQL statements without expressions.

  • The SQL statement must not be within quotes. 

  • The $<variable_name> parts of the SQL statement are expressions. In the below example, $id and $book.

Examples:

Additionally, the JSON path is allowed only in the WHERE clause. If the SQL statement starts with SELECT (case-insensitive), the Snap regards it as a select-type query and executes once per input document. If not, it regards it as write-type query and executes in batch mode.

Scenario 2: Executing SQL queries with expressions.

  • The SQL statement must be within quotes. 

  • The + $<variable_name> + parts of the SQL statement are expressions, and must not be within quotes. In the below example, $tablename.

  • The $<variable_name> parts of the SQL statement are bind parameter, and must be within quotes. In the below example, $id and $book.

  • "EMPNO=$EMPNO and ENAME=$EMPNAME"

  • "emp='" + $emp + "'"

  • "EMPNO=" + $EMPNO + " and ENAME='" + $EMPNAME+ "'"

Table name and column names must not be provided as bind parameters. Only values can be provided as bind parameters.

Examples:

  • The non-expression form uses bind parameters, so it is much faster than executing N arbitrary SQL expressions.

  • Using expressions that join strings together to create SQL queries or conditions has a potential SQL injection risk and hence unsafe. Ensure that you understand all implications and risks involved before using concatenation of strings with '=' Expression enabled.

  • The '$' sign and identifier characters, such as double quotes (“), single quotes ('), or back quotes (`), are reserved characters and should not be used in comments or for purposes other than their originally intended purpose.

Single quotes in values must be escaped

Any relational database (RDBMS) treats single quotes (') as special symbols. So, single quotes in the data or values passed through a DML query may cause the Snap to fail when the query is executed. Ensure that you pass two consecutive single quotes in place of one within these values to escape the single quote through these queries.

For example:

If String 

To pass this value

Use

Has no single quotes

Schaum Series

'Schaum Series'

Contains single quotes

O'Reilly's Publication

'O''Reilly''s Publication'


Examples

Azure SQL - Execute Snap as a Standalone Pipeline

The following pipeline describes how the Snap functions as a standalone Snap in a pipeline:

  • Extract: The SQL statement, select * from <table_name>, extracts the Azure table data.

 

Typical Snap Configurations

The key configuration of the Azure SQL - Execute lies in how you pass the SQL statement to read Azure records. As it applies in SnapLogic, you can pass SQL statements in the following manner:

Without Expression: Directly passing the required SQL statement in the Azure SQL Execute Snap.

  • With Expressions

    • Values from an upstream Snap: The JSON Generator Snap passes the values to be inserted into the table on Azure.

  • Pipeline Parameter: Pipeline parameter set to pass the required values to the Azure.

Extract, Transform, Load

The following example use case demonstrates a broader business logic involving the ETL transformations, that shows how typically in an enterprise environment, an execute functionality is used. This pipeline reads and moves files from the SQL Server Database to the Azure SQL Database and the Azure SQL Execute Snap reads the newly loaded table on the Azure SQL instance.

  1. Extract: The SQL Server Select Snap reads the data from the SQL Server Database.

  2. Load: The Azure SQL Execute Snap inserts the data into an Azure SQL table.

  3. Read: Another Execute Snap is used to read the data from the newly loaded table on the Azure SQL database.


Downloads

Important steps to successfully reuse Pipelines

  1. Download and import the Pipeline into SnapLogic.
  2. Configure Snap accounts as applicable.
  3. Provide Pipeline parameters as applicable.

  File Modified

Snap Pack History

 Click to view/expand
Release Snap Pack VersionDateTypeUpdates
May 2024main26341 Stable

The following Azure SQL Active Directory Accounts have been renamed because Microsoft has rebranded Azure Active Directory to Microsoft Entra ID.

February 2024436patches25468 Latest

The Azure SQL Bulk Extract Snap now supports Azure SQL Active Directory and Azure SQL Active Directory Dynamic Accounts.

February 2024main25112 StableUpdated and certified against the current SnapLogic Platform release.
November 2023main23721 StableUpdated and certified against the current SnapLogic Platform release.
August 2023main22460

 

Stable

The Azure SQL Execute Snap now includes a new Query type field. When Auto is selected, the Snap determines the query type automatically.

May 2023main21015 StableUpgraded with the latest SnapLogic Platform release.
May 2023432patches20967 LatestFixed an issue with the connection pool in the Azure SQL accounts, which was affecting the Snap Pack's performance. You should now experience improved performance when using these accounts.
March 2023432patches20318 Latest

The Azure SQL - Bulk Extract Snap no longer fails with a java.lang.NumberFormatException error.

March 2023432patches20219 LatestFixed an issue with the Azure SQL - Bulk Load Snap involving special characters in JDBC URL properties, such as passwords. Special characters are properly escaped now
March 2023432patches20049 Latest

Intermittent connectivity issues no longer occur when using some Snaps in the Azure SQL Snap Pack. These issues caused the following message to display: The connection is broken and recovery is not possible. The connection is marked by the client driver as unrecoverable. No attempt was made to restore the connection

February 2023main19844 StableUpgraded with the latest SnapLogic Platform release.
January 2023

431patches19493

 Latest

The Azure SQL Active Directory and the Azure SQL Active Directory Dynamic accounts now include an Authentication Mode dropdown list, which allows you to choose the Active Directory authentication mode you would like to use. This enhancement supports Active Directory Service Principal authentication for the Snap Pack.

December 2022

431patches19410


 


 

Stable


Latest

Fixed the Azure SQL - Execute Snap using the Azure SQL Active Directory Account that failed with SQL operation failed errors in environments using federated authentication.

December 2022431patches19263 Latest

The Azure Synapse SQL Insert Snap no longer includes the Preserve case-sensitivity checkbox because the database is case-insensitive. The database stores the data regardless of whether the columns in the target table and the input data are in mixed, lower, or upper case.

November 2022main18944 Stable

The Azure SQL Snap Pack uses the 11.2x driver by default. If you specify any specific driver, ensure that you provide a version higher than 9.1 that is compatible with Microsoft Authentication Library for Java, as this Snap Pack uses the MSAL4J. Otherwise, you may run into issues.

August 2022

main17386 Stable

The Azure Active Directory Search Entries Snap includes a Display Properties field where you can specify the properties to display in the output for the user or group. For the Snap to correctly return the attributes in the output, you must specify the attribute name as described in User profile attributes in Azure Active Directory B2C. Learn more about Properties for a user and Properties for a group.

4.29 Patch429patches16545 Latest

Fixed an issue with the Azure SQL-Stored Procedure Snap where the Snap failed with an Invalid value type error when the stored procedure contained an NCHAR data type.

4.29 Patch429patches16460 Latest

Fixed an issue with Azure SQL Bulk Load Snap where the Snaplex exited due to insufficient memory when a large number of rows are loaded into the target table and the input data contained a null value for a non-nullable column.

4.29main15993 Stable

Enhanced the Azure SQL Account and Azure SQL Active Directory Account with the Disable connection pooling checkbox that allows you to manage session state sharing.

4.28 Patch428patches15164 Latest

Fixed an issue with the Azure SQL - Update Snap where the Snap failed with an Incorrect syntax error when a column in a table is of NVARCHAR, NCHAR, or NTEXT data type and this column is part of another NVARCHAR, NCHAR, or NTEXT data type column name and the update condition is specified as an expression.

4.28 Patch428patches15114 LatestFixed an issue with the Azure SQL - Bulk Load Snap where the decimal values lost precision when they were inserted into the database.
4.28main14627 StableUpgraded with the latest SnapLogic Platform release.
4.27main12833 Stable

Enhanced the Azure SQL - Execute Snap to invoke stored procedures.

4.26main11181 StableUpgraded with the latest SnapLogic Platform release.
4.25main9554
 
StableUpgraded with the latest SnapLogic Platform release.
4.24main8556
Stable

Enhances the Azure SQL - Stored Procedure to accept parameters from input documents by column keys. If the values are empty, the parameters are populated based on the column keys for easier mapping in the upstream Mapper Snap.

4.23main7430
 
Stable

Enhances the Azure SQL - Bulk Extract Snap by adding a new check box Enable UTF-8 encoding to support UTF-8 encoded characters. This check box allows the Snap to update the BCP command to read the special characters.

4.22 Patch 422Patches6751 Latest

Enhances the Azure SQL - Bulk Extract Snap by adding a new check box Enable UTF-8 encoding to support UTF-8 encoded characters. Selected by default, this check box allows the Snap to update the BCP command to read these special characters.

4.22main6403
 
StableUpgraded with the latest SnapLogic Platform release.
4.21 Patch 421patches6272 Latest

Fixes the issue where Snowflake SCD2 Snap generates two output documents despite no changes to Cause-historization fields with DATE, TIME and TIMESTAMP Snowflake data types, and with Ignore unchanged rows field selected.

4.21 Patch 421patches6144 Latest

Fixes the following issues with DB Snaps:

  • The connection thread waits indefinitely causing the subsequent connection requests to become unresponsive.
  • Connection leaks occur during Pipeline execution.
4.21 Patch421patches5864 Latest

Adds support for UTF_8 characters with BCP (bulk copy program) command to the Azure SQL Bulk Extract Snap.

4.21 PatchMULTIPLE8841 Latest

Fixes the connection issue in Database Snaps by detecting and closing open connections after the Snap execution ends. 

4.21snapsmrc542

 

StableUpgraded with the latest SnapLogic Platform release.
4.20snapsmrc535
 
StableUpgraded with the latest SnapLogic Platform release.
4.19 Patch db/azuresql8403 Latest

Fixes an issue with the Azure SQL - Update Snap wherein the Snap is unable to perform operations when:

  • An expression is used in the Update condition property.
  • Input data contain the character '?'.
4.19snaprsmrc528
 
Stable

Enhanced the error handling in PolyBase Bulk Load Snap when writing to a data warehouse. The Snap writes a new blob in the Azure container. This new blob highlights the first invalid row that caused the bulk load operation to fail.

4.18snapsmrc523
 
StableUpgraded with the latest SnapLogic Platform release.
4.17ALL7402
 
Latest

Pushed automatic rebuild of the latest version of each Snap Pack to SnapLogic UAT and Elastic servers.

4.17snapsmrc515
 
Latest
  • Fixes an issue with the Azure SQL Execute Snap wherein the Snap would send the input document to the output view even if the Pass through field is not selected in the Snap configuration. With this fix, the Snap sends the input document to the output view, under the key original, only if you select the Pass through field. 
  • Added the Snap Execution field to all Standard-mode Snaps. In some Snaps, this field replaces the existing Execute during preview check box.
4.16 Patch db/azuresql7179 Latest

Fixes an issue with the Azure SQL Bulk Extract Snap wherein the Snap fails to process all the metadata information of the input table and schema.

4.16snapsmrc508
 
StableUpgraded with the latest SnapLogic Platform release.
4.15 Patch db/azuresql6327 Latest

Replaced Max idle time and Idle connection test period properties with Max life time and Idle Timeout properties respectively, in the Account configuration. The new properties fix the connection release issues that were occurring due to default/restricted DB Account settings.

4.15snapsmrc500
 
StableUpgraded with the latest SnapLogic Platform release.
4.14snapsmrc490
 
StableUpgraded with the latest SnapLogic Platform release.
4.13

snapsmrc486

 
StableUpgraded with the latest SnapLogic Platform release.
4.12

snapsmrc480

 
StableUpgraded with the latest SnapLogic Platform release.
4.11 Patchazuresql4631 Latest

Fixes an issue with the Azure Polybase Bulk Load Snap that failed with "Parse error" when there was no input.

4.11 Patch db/azuresql4326 Latest
  • Fixes an issue with the Azure SQL Polybase Bulk Load Snap, that allowed the Snap to load data into a table with identity columns for Azure SQL Data Warehouse instance.
  • Fixes encoding issue when using a Windows plex, and added a "Encoding" Snap property that allows user to choose input data's encoding from UTF-8 and UTF-16.
4.11snapsmrc465
 
StableUpgraded with the latest SnapLogic Platform release.
4.10

snapsmrc414

 
Stable
  • Renamed the Azure SQL Bulk Load Snap to Polybase Bulk Load as it supports Azure SQL DW and SQL Server (starting with 2016).
  • The new Snap, Azure SQL Bulk Load is developed has been developed to carry out the bulk load function extensively for Azure SQL DB. (The old Azure Bulk Load has been renamed to Polybase BulkLoad  which works for on-premise SQL Server and Azure SQL Data Warehouse with polybase functionality).
  • Azure SQL Bulk Load, Table List, Execute, Stored ProcedureAzure SQL - Table Listand Update Snaps are released in this release.
  • Added Auto commit property to the Select and Execute Snaps at the Snap level to support overriding of the Auto commit property at the Account level.
  • Added the below accounts:
    • Azure SQL Active Directory Account

    • Azure SQL Active Directory Dynamic Account

4.9 Patch azuresql3078 Latest

Fixes an issue regarding connection not closed after login failure; Expose autocommit for "Select into" statement in PostgreSQL Execute Snap and Redshift Execute Snap

4.9snapsmrc405
 
StableUpgraded with the latest SnapLogic Platform release.
4.8 Patch azuresql2750
Latest

Potential fix for JDBC deadlock issue.

4.8

snapsmrc398

 
Stable
  • Info tab added to accounts.
  • Database accounts now invalidate connection pools if account properties are modified and login attempts fail.
4.7 Patchazuresql2196 Latest

Fixes an issue for database Select Snaps regarding Limit rows not supporting an empty string from a pipeline parameter.

4.7

snapsmrc382

 
StableUpgraded with the latest SnapLogic Platform release.
4.6snapsmrc362
 
StableUpgraded with the latest SnapLogic Platform release.
4.5.1

snapsmrc344

 
StableUpgraded with the latest SnapLogic Platform release.
4.5

snapsmrc344

 StableUpgraded with the latest SnapLogic Platform release.

  • No labels