Error during data pull from BLOB using SSIS with Azure Feature Pack on Azure VM.

Szymon Dąbrowski 25 Reputation points
2023-03-16T12:50:57.6533333+00:00

Hello,
I have a problem with pulling data from 3rd party Azure BLOB Storage (located in East US 2) using an SSIS package executed on our production Azure VM (in private network) located in West Europe.
(Interesting fact - everything works fine on my local machine when I'm trying to use the same SSIS package and BLOB)

Storage Account configuration is visible below:
User's image

Additionally - in Storage Account IAM I see that, we are assigned to the roles below:
User's image

VM Configuration:
User's image

Looks like, that we don't have any firewall rules that can block web traffic. I can successfully test the connection between our production VM and this BLOB:
User's image

Moreover:
a) I am able to download necessary data using Azure Storage Explorer from this BLOB directly on the problematic VM.
b) I am able to successfully test connection in my Azure Storage Connection Manager configured in SSIS package:
User's image

And below is what is visible in CMD after testing connection in SSIS:
User's image

When I'm trying to download the same file (that I successfully downloaded previously on VM using Azure Storage Explorer) via SSIS "Azure Blob Download Task" in CMD I see only:
User's image

And SSIS execution finished with error " Download task has stopped with exception: The underlying connection was closed: An unexpected error occurred on a send."
User's image

I have the same error(but more detailed) when I'm trying to connect to this Azure Storage from Microsoft SQL Server Management Studio:
User's image

I thought, that it can be caused by TLS 1.2 version configured on the 3rd party Storage Account, but I tested this case also for my own SA (that is located in the same region as production VM) with configured TLS 1.0 - result was the same.

Below is a list of things that I made before preparation SSIS package to download data from BLOB.

  1. I installed both 32-bit JRE 8 and 64-bit JRE 8 (Java Runtime Environment - https://www.java.com/en/download/manual.jsp) on VM and next made sure that in the Registry Editor, 

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment{instaled java version}\JavaHome 

has set the proper path in the "Data" column, to just installed JRE - like below:

User's image

 

  1. I created a new JAVA_HOME Environment Variable (in the section for System Variable)  and set her value as a path to the folder with the installed previously 64-bit JRE 8

User's image

 

  1. I installed Azure Feature Pack for SQL Server 2016 (this is my SQL version)

https://www.microsoft.com/en-us/download/details.aspx?id=49492

 

  1. To enable the ability to successfully pull data from Azure Data Lake with TLS version 1.2, I created two new REG_DWORD values named SchUseStrongCrypto with data 1 under the following two registry keys:

 

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft.NETFramework\v4.0.30319

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4.0.30319

 

(More details in the section "Use TLS 1.2" -  https://learn.microsoft.com/en-us/sql/integration-services/azure-feature-pack-for-integration-services-ssis?view=sql-server-ver16#use-tls-12

User's image

User's image

 

At this moment, I have installed .Net versions visible below:
User's image

Does anyone have any idea how I can fix it?

Thank you

Azure Virtual Machines
Azure Virtual Machines
An Azure service that is used to provision Windows and Linux virtual machines.
Azure Blob Storage
Azure Blob Storage
An Azure service that stores unstructured data in the cloud as blobs.
SQL Server Integration Services
{count} votes

Answer accepted by question author
  1. SaiKishor-MSFT 17,336 Reputation points Moderator
    2023-03-17T20:01:18.8833333+00:00

    @Szymon Dąbrowski I'm glad that you were able to resolve your issue and thank you for posting your solution so that others experiencing the same thing can easily reference this! Since the Microsoft Q&A community has a policy that "The question author cannot accept their own answer. They can only accept answers by others ", I'll repost your solution in case you'd like to "Accept " the answer.

    Issue:

    I have a problem with pulling data from 3rd party Azure BLOB Storage (located in East US 2) using an SSIS package executed on our production Azure VM (in private network) located in West Europe.
    (Interesting fact - everything works fine on my local machine when I'm trying to use the same SSIS package and BLOB)

    Additionally - in Storage Account IAM I see that, we are assigned to the roles below:

    Storage Blob Data Contributor

    Storage Blob Data Reader

    Looks like, that we don't have any firewall rules that can block web traffic. I can successfully test the connection between our production VM and this BLOB using Test Net Connection on TCP port 443.

    Moreover:

    a) I am able to download necessary data using Azure Storage Explorer from this BLOB directly on the problematic VM.
    b) I am able to successfully test connection in my Azure Storage Connection Manager configured in SSIS package:

    When I'm trying to download the same file (that I successfully downloaded previously on VM using Azure Storage Explorer) via SSIS "Azure Blob Download Task" in CMD I see only: Syn_Sent

    Solution:

    I thought, that it can be caused by TLS 1.2 version configured on the 3rd party Storage Account, but I tested this case also for my own SA (that is located in the same region as production VM) with configured TLS 1.0 - result was the same.

    Below is a list of things that I made before preparation SSIS package to download data from BLOB.

    1. I installed both 32-bit JRE 8 and 64-bit JRE 8 (Java Runtime Environment - https://www.java.com/en/download/manual.jsp) on VM and next made sure that in the Registry Editor, 

    HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment{instaled java version}\JavaHome 

    has set the proper path in the "Data" column, to just installed JRE - like below:

    User's image

     

    1. I created a new JAVA_HOME Environment Variable (in the section for System Variable)  and set her value as a path to the folder with the installed previously 64-bit JRE 8

    User's image

     

    1. I installed Azure Feature Pack for SQL Server 2016 (this is my SQL version)

    https://www.microsoft.com/en-us/download/details.aspx?id=49492

     

    1. To enable the ability to successfully pull data from Azure Data Lake with TLS version 1.2, I created two new REG_DWORD values named SchUseStrongCrypto with data 1 under the following two registry keys:

     

    HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft.NETFramework\v4.0.30319

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4.0.30319

     

    (More details in the section "Use TLS 1.2" -  https://learn.microsoft.com/en-us/sql/integration-services/azure-feature-pack-for-integration-services-ssis?view=sql-server-ver16#use-tls-12

    User's image

    User's image

     

    At this moment, I have installed .Net versions visible below:
    User's image

    Additionally, if you need to use TLS 1.2 you have to configure two registry keys on your VM:

    Copy

    
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319
    
    

    and add new values named SystemDefaultTlsVersions with DWORD value=1
    like below:User's image

    More details in the link below:
    https://support.avigilon.com/s/article/How-to-Enable-TLS-1-2-as-Windows-Default?language=en_US
    Print screen from this page to back up purpose:
    User's image

    Additionally, if you need to use TLS 1.2 you have to configure two registry keys on your VM:

    Copy

    
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319
    
    

    and add new values named SystemDefaultTlsVersions with DWORD value=1
    like below:User's image

    More details in the link below:
    https://support.avigilon.com/s/article/How-to-Enable-TLS-1-2-as-Windows-Default?language=en_US
    Print screen from this page to back up purpose:

    User's image

    Please let us know if you have any more questions and we will be glad to assist you further. Thank you!

    Remember:

    Please accept an answer if correct. Original posters help the community find answers faster by identifying the correct answer. Here is how.

    Want a reminder to come back and check responses? Here is how to subscribe to a notification.

    0 comments No comments

0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.