SSIS complains about access rights when path use æøå characters - ssis

So, I have a SSIS package, which is supposed to write a file to "..\Prod\OUT\Markedsføringslisten".
However, SSIS fails, citing access rights:
[SSIS.Pipeline] Error: Flat File Destination failed the pre-execute phase and returned error code 0xC020200E.
[Flat File Destination [2]] Error: Cannot open the datafile "..\prod\Out\Markedsføringslisten\AL_Erhverv_Markedsføringslisten_2021_12_06.csv".
[Flat File Destination [2]] Warning: Access is denied.
However, If I change the path to:
"...\Prod\OUT\Markedsfoeringslisten" (ø = oe) then everything works just fine, meaning that it shouldn't really be an access issue with the subfolder. We need to keep using the same name, however, as other solutions are expecting files from: "..\Prod\OUT\Markedsføringslisten".
The package is being build in SSIS 2017. An older variant of the package, built in 2013, works just fine. I can't see any immediate difference between the two connections, but feel free to ask for additional information if you feel it could help.

Related

SSIS Error: Failed to decrypt protected XML node

I am taking over the development of an SSIS package and the original author is no longer around. I need to make some edits to the package, but I get some errors:
Error loading Package.dtsx: Failed to decrypt protected XML node "DTS:Property" with error 0x8009000B "Key not valid for use in specified state.". You may not be authorized to access this information. This error occurs when there is a cryptographic error. Verify that the correct key is available.
Upon some pages in the interwebs, I found that you can change the ProtectionLevel property to 'Don't Save Sensitive'. According to MS documentation, it just doesn't save the sensitive info. From looking at the package code, the error is throwing because of one of the HTTPConnection stores a password.
DTS:ServerURL="https://servicewebaddress/ExportService.asmx">
<DTS:Property
DTS:Name="ServerPassword"
Sensitive="1"
Encrypted="1">sdfsdfsdf</DTS:Property>
<DTS:Property
DTS:Name="ProxyPassword"
Sensitive="1"
Encrypted="1">kldkjlkjlkjl</DTS:Property>
</DTS:HttpConnection>
What are my options? If I change ProtectionLevel property to 'Don't Save Sensitive', what would I need? What is ServerPassword/ProxyPassword? Can someone explain what those properties mean?
UPDATE: I am running Integration Services 11 on the server I am running. I will deploy by package.
You need to refresh the Package Encryption by doing the following:
Change the ProtectionLevel property of the offending package to 'Don't Save Sensitive'.
Save & Close the Package.
Reopen the package and verify that the error has disappeared.
Now restore the package ProtectionLevel property to 'EncryptSensitiveWithUserKey'. (This will restore the encryption of the sensitive data using your User Key).
Repeat Steps 2 and 3.

Unable to cast COM object of type 'System._COMObject' to interface type

I have 3 SSIS packages. Two out of the 3 SSIS packages work perfectly, the third. Which is a copy of the 2nd one, except changing connection strings keeps throwing the problem:
Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSObject100'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{D4E5AF42-7999-473C-8082-6EFC676953C4}' failed due to the following error: The application called an interface that was marshalled for a different thread. (Exception from HRESULT: 0x8001010E (RPC_E_WRONG_THREAD)).
It has been doing this ever since I copied the package over. I have followed through online guides and run the regsvr32 dts.dll and this said it was successful but nothing has changed. I still get the error, why is this?
The SSIS package seems to validate my containers, it takes a long time to do this compared to the other two and then fails later on in the validation throwing the above error message.
You can't just copy the package, but you need additionally to change the name and generate new GUID (which identifies the COM object) for this package. Check this MSDN article for more info.
Here is the workaround: Solution Explorer -> right click project ->properties->debugging->Run64bitRuntime->set to false.
I hope it helps others. The solution worked for me:
I registered the assembly using the gacutil.exe. My SSIS project target server version was SQL 2012. So, I was using the DTSPipelineWrap.dll version 11.0. I opened the "Developer Command Prompt for VS2015" in Administrator mode, then typed the following command: C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\gacutil.exe /i "C:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.DTSPipelineWrap.dll"
Then from my SSIS script task, References--> I removed the existing DTSPipelineWrap which was using the assembly from the location "C:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.DTSPipelineWrap.dll". Then in the References folder, right click-->Add Reference-->Browse find the assembly from the location "C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Microsoft.SqlServer.DTSPipelineWrap\v4.0_11.0.0.0__89845dcd8080cc91\Microsoft.SQLServer.DTSPipelineWrap.dll"
Click Ok. Rebuild the code and executed the package. It has worked for me.
In my case this is was a validation overload/timeout, the package contained references to hundreds of tables.
Opening the offending data flow forced re-validation and cleared the error.
Project --> Properties --> Configuration Properties --> Debugging
and then change Run64BitRuntime to False under Debug Options
In case this might help someone: I got this error due to timeout issues caused by a poorly optimised query. There was nothing inherently wrong with the SSIS package and it ran fine once i fixed the problem in the DB Source.

Unable to schedule an ssis package WHICH RETRIEVES data from MYSQL

I've created an SSIS PACKAGE on machine X to retrieve data from MYSQL DB Query from machine Y and write to an SQLSERVER Destination Table which is on machine Z(compulsions since I am unable to connect to mysql from Z and X is the only machine which has navicat).
The package runs to the T when run manually and I'm trying to schedule it on machine X for Z's DB .I've created the xml configuration file and placed it on Z since the process runs on Z's DB.and the job fails when executing as a scheduled Job.
I've added passwords to the config file as they don't save automatically.
I suppose it's due to different machines being used(Package on X running on Z's DB and config file on Z).
Here's the error:
Failed to open package file "D:\CSMS\SSIS\Random\Random\MySQlDBtoDWH11DataTransfer.dtsx" due to error 0x80070015 "The device is not ready." This happens when loading a package and the file cannot be opened or loaded correctly into the XML document. This can be the result of either providing an incorrect file name was specified when calling LoadPackage or the XML file was specified and has an incorrect format. End Error Could not load package "D:\CSMS\SSIS\Random\Random\MySQlDBtoDWH11DataTransfer.dtsx" because of error 0xC0011002. Description: Failed to open package file "D:\CSMS\SSIS\Random\Random\MySQlDBtoDWH11DataTransfer.dtsx" due to error 0x80070015 "The device is not ready." This happens when loading a package and the file cannot be opened or loaded correctly into the XML document. This can be the result of either providing an incorrect file name was specified when calling LoadPackage or the XML file was specified and has an incorrect format.
Unable to understand where I'm failing!
Are you using Direct configuration or using Indirect( in which your xml config file path is saved in Environmental variable?
IF you are using Direct configuration, you need to make sure your both machines have the same folder structure which is saved in package.
If you are using Environment variable to point to configuration file. Make sure you have changed the value of variable according to machines and folders where your configuration file is.
To close this question,I've scheduled it to run from a batch file and the process is running fine.

SQL Server Agent Error on running an SSIS package

When trying to execute an SSIS package I get the following error:
Date 14/08/2013 15:02:42 Log Job History (test)
Step ID 1 Server YGAL1-MOBL1 Job Name test Step Name ssis
Duration 00:00:00 Sql Severity 0 Sql Message ID 0 Operator
Emailed Operator Net sent Operator Paged Retries Attempted 0
Message Executed as user: GER\YGAL1-MOBL1$. Microsoft (R) SQL Server
Execute Package Utility Version 10.50.1600.1 for 64-bit Copyright
(C) Microsoft Corporation 2010. All rights reserved. Started:
15:02:42 Error: 2013-08-14 15:02:42.84 Code: 0xC0011007
Source: {0AF31012-7A56-4B28-92EF-BE439E68E6F0} Description:
Unable to load the package as XML because of package does not have a
valid XML format. A specific XML parser error will be posted. End
Error Error: 2013-08-14 15:02:42.84 Code: 0xC0011002 Source:
{0AF31012-7A56-4B28-92EF-BE439E68E6F0} Description: Failed to
open package file "C:\Users\ygal1\Documents\Visual Studio
2008\Projects\Integration Services Project2\Integration Services
Project2\Package.dtsx" due to error 0x80070005 "Access is denied.".
This happens when loading a package and the file cannot be opened or
loaded correctly into the XML document. This can be the result of
either providing an incorrect file name was specified when calling
LoadPackage or the XML file was specified and has an incorrect format.
End Error Could not load package "C:\Users\ygal1\Documents\Visual
Studio 2008\Projects\Integration Services Project2\Integration
Services Project2\Package.dtsx" because of error 0xC0011002.
Description: Failed to open package file
"C:\Users\ygal1\Documents\Visual Studio 2008\Projects\Integration
Services Project2\Integration Services Project2\Package.dtsx" due to
error 0x80070005 "Access is denied.". This happens when loading a
package and the file cannot be opened or loaded correctly into the XML
document. This can be the result of either providing an incorrect file
name was specified when calling LoadPackage or the XML file was
specified and has an incorrect format. Source:
{0AF31012-7A56-4B28-92EF-BE439E68E6F0} Started: 15:02:42 Finished:
15:02:42 Elapsed: 0.046 seconds. The package could not be found.
The step failed.
Any ideas on how can I solve it?
i had a similar problem and what i did to get my package to run was:
a. Open Job properties in SQL Server
b. On the Steps page in the Package field: I used the entire folder name instead of the mapped name, for example: \share\allusers\myuserid\mypackage.dtsx instead of A:\mypackage.dtsx
Best.
It looks to me like the Service account for the SQL Agent doesn't have permissions to read package.dtsx.
Maybe check which account is running the SQL Agent & give it NTFS read permissions to C:\Users\ygal1\Documents\Visual Studio 2008\Projects\Integration Services Project2\Integration Services Project2
Or store the DTSX file in a location the SQL Agent account can access?

SSIS Log file, dynamic file path and access denied error

I have a parent package where I set a variable pointing to a folder where I want to write the execution log of the package. This parent package executes child packages and set value for child's variables too.
In child packages the package logging is stetted up and the connection string to log file is built with the expression:
[User::LogFolder] + "\\" + [System::PackageName] + ".log"
But my package always fail in the first step with this message:
Error: 0xC001404B at Child Package, Log provider "SSIS log provider for Text files": The SSIS logging provider has failed to open the log. Error code: 0x80070005. Acces denied.
The error happens inside BIDS. If I set the path to the log file statically to the same path, then it runs without problems, so it doesn't seems to be a permissions problem. Any suggestion on how to solve this?
Thanks in advance.
Edit: The problem seems to happen because [User::LogFolder] value is obtained from parent package, and when the package tries to open the log the values have not been passed yet, causing the error. Is there a way to solve this?
I found the answer. For the records, the problem was that [User::LogFolder] value is obtained from parent package. And the child package was trying to write to the log before the variable value were filled, causing the error.
I solved it hardcoding the log value in the package. :-(