SSMS 18 & VS Community 2019 not recognizing that SSIS is installed - sql-server

I have a new installation of SQL Server 2019, VS Community 2019 and SSMS 18.5 on Windows Server 2019. I use a stored procedure in SQL to call a DTS package to pull data from an offsite database to our local SQL Server. I have installed VS2019 with SSDT and then added the SSIS Projects extension. When I execute the stored procedure in SSMS I get the following errors.
Description: The registry key "SOFTWARE\Classes\CLSID{692A88CF-7641-45B7-8E01-7BEE602D40EE}\DTSInfo" cannot be opened.
End Warning
Warning: 2020-05-06 10:49:38.42
Code: 0x8004801E
Source: Data Flow Task 1 Data Flow Task 1 (SSIS.Pipeline)
Description: Cannot find the "CurrentVersion" value for component {692A88CF-7641-45B7-8E01-7BEE602D40EE}. The CurrentVersion value for the component cannot be located. This error occurs if the component has not set its registry information to contain a
CurrentVersion value in the DTSInfo section. This message occurs during component development, or when the component is used in a package, if the component is not registered properly.
End Warning
I have uninstalled VS and SSIS Projects twice to try and correct any registration issues with no change in results. In fact it's worse. VS seems to be confused about the state of SSIS; see image. I've check About Visual Studio and it shows SQL Server Data Tools v16.0.62003.05170 and SQL Server Integration Services v15.0.2000.94. SSIS shows up as an installed program on the server. I have rebuilt the package completely from scratch in VS 2019 and get the same errors.
Any help is appreciated

Related

The AcquireConnection method call to the connection manager PostgreSQL30.app_user failed with error code 0xC0014009

I'm working on a SSIS package which I've been developing inside Visual Studio Community 2019 (VS). I have installed Integration Services to develop the SSIS package.
The task of the package is pretty simple, connect to a PostgreSQL datasource via an ODBC connection and then perform a lookup to identify new and updated fields and pass these into a MS SQL database via an OLE DB connection. When I run this package from both VS and via cmdp using dtexec.exe it runs successfully without any error (yay).
I run into a problem when I try to execute this package after deploying it from VS using the Deploy Package Wizard to SSISDB on MS SQL Server(2016). The errors can be found in the image below. Please note that I have selected Target Server Version SQL Server 2016 so there should be no compatibility issues between the package and server.
I have read that there may be a compatibility issue between 64 & 32-bit. However, I have no idea how to configure this from within SSISDB. I did however, attempt to execute the package with run64bitruntime set to "false" (done inside vs) and "true" with no change in result. my version of SSMS 2016 is running 64-bit.
I should also add that I'm connecting remotely to SSMS 2016 to run the package from SSISDB, remote connections is set to true for this server.
Please let me know if I can supply further details to help debug this. Thank you.

Script Task Corrupt - SSISDB execution error after upgrading from SQL Server 2016 to SQL Server 2016 SP2

We recently updated our production SQL Server 2016 Enterprise instance from SP1 to SP2. We are currently on version 13.0.5026. Prior to the upgrade, a user with connect rights to SSISDB and proper rights on the Integration Services Catalog folder could deploy an ISPAC file successfully.
After the upgrade, the same users can still deploy to the SSISDB, but when you execute the .DTSX, the script task inside fails validation. If I deploy the exact same ISPAC as a sysadmin, there's no issue. The usual solution I've seen is to confirm that SSDT Configuration Properties are set to SQL Server 2016. We have verified this is set correctly prior to building the ISPAC.
I saw a similar issue when migrating from SQL Server 2014 to 2016 a couple years back, but the solution at that time was to give the Proxy account that runs the package modify rights to the C:\Windows\Temp folder so it can generate temp files. This new issue is hard to pin down, and I don't want to give out sysadmin just so others can do the simple deployment steps.
Any thoughts or suggestions are appreciated.
*******Update/edit************:
The server has a SQL Server 2016 deployment tool located under SQL Server/130/DTS/Binn - ISDeploymentWizard.exe. This deployment tool works. There is another identical wizard under the 140/DTS/Binn location, same name but 1 KB larger (assuming this is because SSMS is a separate install now, and I installed latest and greatest on server). This one fails deployment. I'm banging my head against the wall as to why one works but the other doesn't. Locally we all use SSMS 2017, and with that we get the 140/DTS/Binn ISDeployment file, not the 130 (since that's SQL Server 2016 and we're using SSMS 2017, which I thought was backwards compatible). Either way, this problem just started occurring and we've been on the same version of SSMS for a few months.
Image of the Execution information report from SSMS
Had resolved a similar issue with C# scripts recently. In short: don't use 140 version of ISDeploymentWizard.exe with MS SQL 2016. It apparently mangles something in C# code, or components' properties, and 2016 runtime stops recognising them.
In my case, a package with C# script source has started to throw the following error during the validation phase:
Error: Microsoft.SqlServer.Dts.Pipeline.ComponentVersionMismatchException:
The version of C# source component name is not compatible with this
version of the DataFlow. [[The version or pipeline version or both for
the specified component is higher than the current version. This
package was probably created on a new version of DTS or the component
than is installed on the current PC.]]
at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostCheckAndPerformUpgrade(IDTSManagedComponentWrapper100
wrapper, Int32 lPipelineVersion)
The first comment here has helped me to ultimately identify the cause.

SSIS - The script task ... use version 15.0 script that is not supported in this release of Integrated service

Hi I'm looking for some guidance.
I've developed an SSIS project with a couple of script tasks and script components using visual studio 2015 for targeted version 2016.
I have two environment server A and server B both have SSIS 2016 SP1 installed on it.
I have done a project deployed of the packages to Sever A and tested the packages everything executed perfectly.
However when I deployed the packages in SSIS_DB from Server A to Server B I get these errors in my execution report.
The component metadata for "script component, clsid { }" could not be upgraded to the newer version of the component. The PerformUpgrade method failed
2
There was an exception while loading Script Task from XML: System.Exception: The Script Task "" uses version 15.0 script that is not supported in this release of Integration Services. To run the package, use the Script Task to create a new VSTA script. In most cases, scripts are converted automatically to use a supported version, when you open a SQL Server Integration Services package in %SQL_PRODUCT_SHORT_NAME% Integration Services.
at Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptTask.LoadFromXML(XmlElement elemProj, IDTSInfoEvents events)
The interesting part is if I deploy my packages directly from visual studio to Server B the packages executes correctly with no issue.
So there seems to be inconsistencies between server A and Server B.
A small background to this is that when both servers were built Server A had Microsoft SQL Server 2016 (SP1-GDR) and Server Microsoft SQL Server 2016 (RTM)
but they both now have Microsoft SQL Server 2016 (SP1-GDR) after Server B was updated.
I'm not sure how the upgrade was done by my suspicion is that the SSIS on server are different but I can't seem to prove it.
when I check the version they both seem to return same or similar meta data
The right answer is here: https://andyleonard.blog/2017/09/ssis-version-15-0-script-error/
In my case the problem was the setting at the project level “TargetServerLevel” set to “SQL Server 2017”. The correct value must be “SQL Server 2016”. Once the value is changed and the project redeployed errors desappear.
I believe one of developers in my team used VS 2017 when added the project. All other tasks and components, excep script, were fine even with incorrect server version and the problem appeared only when I had to use script tasks and components.
To fix the problem open project parameters => Configuration Properties => TargetServerVersion
Select “SQL Server 2016”, then deploy to the server.
This was caused by SSMS. I don’t know what’s going on under the hood but During the deployment I was using SSMS 2017 which seems to be upgrading script components in my packages. I changed to use SSMS 2016 and this issue disappeared
Just summarizing some things because there are some reasons for facing this problem:
Your are deploying a package with Target Version Definition for another SQL Server
You are deploying a package which contains a script task with not same SSMS version as SQL Server Version
If your package doesn't contain a script task for example, then any version of SSMS can deploy the package to any version of SQL Server via SSISDB catalog. Not sure why is this happening. Seems that you can deploy and execute packages while making sure that the package target version is supported from SQL Version, but also if you have a ScriptTask inside you need to be super careful and make sure also that the integration services version of SSMS is the same with SQL Server version.
I will open a question to Microsoft just to be sure why the script task has this treatment. Maybe is because the script task is Framework dependent.

SQL Server 2016 SSIS packages failing when deployed using VS2015 SQL Server Data Tools v14

Visual Studio 2015 Update 3 14.0.25341.01
SQL Server Data Tools 14.0.61707.300
SQL Server 2016 13.0.4435.0
I recently had a message in VS2015 that a update for SQL Server Data Tools was available. I decided to download and install it and now packages I deploy to SQL 2016 no longer work.
I do not know what my version of SQL Server Data Tools was before I installed the update, but I do know that inside my SSIS Project, I now see the TargetServerVersion option of SQL 2017 (used to only go to SQL 2016).
I confirmed my project (which is the project I use for all my SSIS packages and have since we deployed SQL 2016) is still set to TargetServerVersion SQL 2016. The project is set to Project Deployment Mode, and I've always deployed by opening a package, and clicking File -> Save Copy of filename.dtsx As... and then deploying to target SQL. Nothing has changed in our environment outside of my upgrade of SQL Server Data Tools.
Here's the error I receive when I try to run the package:
Executed as user: DOMAIN\ProxySvc.
Microsoft (R) SQL Server Execute Package Utility
Version 13.0.1601.5 for 64-bit
Copyright (C) 2016 Microsoft. All rights reserved.
Started: 3:32:33 PM
Error: 2017-09-28 15:32:33.37
Code: 0xC0010018
Source: Package_Name
Description: Error loading value "<DTS:ConnectionManagers xmlns:DTS="www.microsoft.com/SqlServer/Dts"><DTS:ConnectionManager DTS:refId="Package.ConnectionManagers[SERVER A]" DTS:CreationName="OLEDB" DTS:DTSID="{E5D397C2-477A-4E04-B930-613DDE14A054}" DTS:ObjectName="SERVER A"><DTS:ObjectData>" from node "DTS:ConnectionManagers".
End Error
Could not load package "\Maintenance Plans\Package_Name" because of error 0xC0010014.
Description: One or more error occurred. There should be more specific errors preceding this one that explains the details of the errors. This message is used as a return value from functions that encounter errors.
Source:
Started: 3:32:33 PM Finished: 3:32:33 PM Elapsed: 0.109 seconds.
The package could not be loaded.
The step failed.
The packages will however work if I deploy them using DtUtil from the SQL 2016 Dev Edition I have installed locally. For example:
"C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\dtutil" /FILE "C:\filename.dtsx" /DestServer SERVERNAME/INSTANCE /Encrypt SQL;"Maintenance Plans\Package_Name";2;PKG_PA$$
Has anyone else had issue with this? I can't be the only person deploying package this way that suddenly had the packages stop working when deployed in VS2015 and SQL Server Data Tools.
I've also opened a Connect for this issue.
Edit: I tried Visual Studio 2017 with the preview edition of SQL Server Data Tools for it. I get the same issue. Package deploys fine, but the package will not run.
Edit 2: If I create an empty package, it runs successfully (granted doing nothing). If I create an empty package with nothing but a single OLEDB connection, it fails with the message above. It also fails with the same message with an empty package and only a single ADO.NET connection.
Edit 3: I deployed two packages. One using SSDT (that fails to run on the server with error above) and another with DTUTIL that executes on the server fine. The packages are the exact same except for how they were copied to the server. I then used DTUTIL to copy the package back to my machine and compared them. Outside of the DTS:LastModifiedProductVersion version differences, the only other change is the EncryptionMethod Algorithm. The one deployed using SSDT says:
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>
And the one deployed using DTUTIL:
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
Obviously the Salt, IV, and CipherValues are different but I wonder if the encryption being applied by SSDT when deploying is causing the issue.
I had the same exact issue. What solved it for me was this: http://microsoft-ssis.blogspot.com/2016/12/ There's a missing assembly reference in the devenv.exe.config file. If you deploy via command line or using the ISDeploymentWizard, that's probably your issue.

SSIS package upgraded by deployment

In our QA virtual environment, which contains multiple SQL server, i wanted to deploy an SSIS 2012 package (ispac, project deployment) maintained through Visual Studio 2010. The destination SSIS server was 2012 but the client on the workstation included SQL server 2014. By executing the ispac package on the workstation and specifying to deploy on the SQL server 2012, the deployment went without any errors. But when executing the package on the SSIS server we get errors such as
"Package Name" : Error: The version number in the package is not
valid. The version number cannot be greater than current version
number.
"Package Name" : Error: Error loading value "8" from node
"DTS:Property".
"Package Name" : Error: Package migration from version 8 to
version 6 failed with error 0xC001700A "The version number in the
package is not valid. The version number cannot be greater than
current version number.".
All my package (.dtsx) have
<DTS:Property DTS:Name="PackageFormatVersion">6</DTS:Property>
As well as the manifest
<SSIS:Property SSIS:Name="PackageFormatVersion">6</SSIS:Property>
It looks like the SQL 2014 client or the workstation upgraded my package to V8 even though my destination server was V6.
When I deployed directly from the SQL 2012 server (which didn't have SQL 2014) everything deployed and ran as expected.
Is This the expected result ? or a problem
So what you're experiencing is expected behaviour citation needed. When an SSIS package is opened using the APIs, the package is updated to that APIs version. This allows a V-1 package to run on a Vcurrent server. There were changes to the formats and stuff so there are reasons a 2005 package may not run on a 2014 box but that's the intent. The bits on disk remain unaltered but the in-memory version is what gets updated.
Since the deployment used the ISDeploymentWizard in the 120 folder (SQL Server 2014), the first thing it did when it saw the 2012 version of the .ispac is convert it to a 2014 format. So, the in-memory version of this .ispac needs to get serialized into the SSISDB and those APIs are the same between 2012/2014. The DeployProject/deploy_project method just takes a binary object, it doesn't do any validation of what version those bits are, just that it has the right shape.
But, when you go to execute the package, that's when the API needs to look at the actual bits in there and discovers, this is a version I don't understand.
Some examples of what that API looks like on How to deploy an existing package in SQL Server 2012
I was able to get this resolved. The issue we had was that the server had both SQL Server 2012 and SQL Server 2014 installed. I was trying to install a package to the SQL 2012 instance, but even though you use VS 2010 Shell to develop the SSIS package, when you run the .ispac file in the file system it was kicking off the ISDeploymentWizard.exe from C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\ location. This was causing the package to automatically get upconverted to version 8 and so each time you executed the package on the SQL Server you would receive the " Error loading value "8" from node "DTS:Property" error.
To resolve simply do the following:
If you're deploying the package to SQL Server 2012 run the executable at this location: C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\ISDeploymentWizard.exe
If you're deploying the package to SQL Server 2014 run the executable at this location: C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\ISDeploymentWizard.exe
Then follow the wizard as normal to install the package.

Resources