Error 0x80004003 while loading package file...Invalid pointer - ssis

So I've been trying to test an SSIS parent package that was developed on my C: drive on my D: drive, which is just a partition on my hard drive with a directory structure that is setup to mimic our other environments. This isn't something new, as I've been able to test packages on D before deploying to the Int, Cert, and Prod environments.
In any case, the parent and individual children packages work fine on C, but when I copy the corresponding .dtsx package files onto the D drive, I'm receiving the Error 0x80004003 while loading package file "C:\tfs_ses|Dev|code\ssis\SES ETL\SES ETL"Package Name.dtsx"...Invalid pointer. I even tried changing the individual connection managers to point to the corresponding .dtsx files on D, as they were copied there from C, but still received this Invalid pointer error. The configuration file has the following amongst its other values: "DMConfig_PackageFilePath"="D:\SFAS\SSIS\SESDatamart\packages"and "SESDM_dtsConfigPath"="D:\SFAS\SSIS\SESDatamart\config". I've also ensured that the connection manager property of Expression for ConnectionString shows as: #[User::PackageFilePath] + "Extract_PCMPolicy.dtsx.
I'm unsure why I'm getting this error. Any advice would be greatly appreciated. Thanks!

first of all try to create a simple package on drive D to check if there is a problem loading it.

Related

SSIS Script Task - Not picking any ddl

Trying to add Newton.json & Restsharp in SSIS's Script task. But while adding I am getting a warning message also the script not working. An attached screenshot will add more points to this question.
These SSIS script projects are temporary, so anything you install via them (that is nested under them) disappears each time you exit the project. Any third party .dlls need to be in a shared area and registered via gacutil and then the reference put in the temporary project instead of installed in the temporary project.

SSIS Error COde 0xC0202020: The buffer type is not valid. Make sure the Pipeline layout and all components pass validation

I have developed a package to find the data that is truncated.
I have excel and csv files as sources. I have given redirect row on error and truncation in the source.The destination I have given as script component where I am updating the variable value. It is working fine in local development environment but not working in Server. I am getting the "The buffer type is not valid. Make sure the Pipeline layout and all components pass validation.
Error Code : 0xC0202020"
I tried the following ways:
1) In both 32 as well as 64 bit machine versions.
2) Replacing the script component with Row count transform.
3) Running the package as administrator.
4) Refreshing the connection managers and columns
None of them worked for me and facing the same issue. How to solve this issue.
I had not mapped the source output since i already had dumped the data in another package by setting the ignore failure property on truncation and error.
I had redirected only source error output. After mapping the source output to a dummy data flow task Union ALL my issue is resolved.

SSIS: Data Conversion Package failed

I was trying to load a table from Excel Source to SQL Server Destination with a data conversion transformation task using SSIS Package. but when I ran the package, it failed with the following error messages
===================================
Failure saving package. (Microsoft Visual Studio)
------------------------------
Program Location:
at Microsoft.DataTransformationServices.Design.Serialization.DtrDesignerSerializer.SerializePackage(IDesignerSerializationManager manager, Package package, TextWriter textWriter)
at Microsoft.DataTransformationServices.Design.Serialization.DtrDesignerSerializer.SerializeComponent(IDesignerSerializationManager manager, IComponent component, Object serializationStream)
at Microsoft.DataWarehouse.Serialization.DesignerComponentSerializer.Serialize(IDesignerSerializationManager manager, Object value)
at Microsoft.DataWarehouse.VsIntegration.Designer.Serialization.DataWarehouseDesignerLoader.Serialize()
at Microsoft.DataWarehouse.VsIntegration.Designer.Serialization.BaseDesignerLoader.Flush(Boolean forceful)
at Microsoft.DataWarehouse.VsIntegration.Designer.Serialization.BaseDesignerLoader.Flush()
at Microsoft.DataWarehouse.VsIntegration.Designer.Serialization.DataWarehouseContainerManager.OnBeforeSave(UInt32 docCookie)
===================================
An invalid character was found in text content.
(msxml6.dll)
------------------------------
Program Location:
at Microsoft.SqlServer.Dts.Runtime.Package.SaveToXML(String& packageXml, IDTSEvents events)
at Microsoft.DataTransformationServices.Design.Serialization.DtrDesignerSerializer.SerializePackage(IDesignerSerializationManager manager, Package package, TextWriter textWriter)
===================================
An invalid character was found in text content.
(msxml6.dll)
------------------------------
Program Location:
at Microsoft.SqlServer.Dts.Runtime.Wrapper.IDTSPackagePersist100.SavePackageToXML(Object& pvDestination, Boolean vbReturnDOM, IDTSEvents100 pEvents)
at Microsoft.SqlServer.Dts.Runtime.Package.SaveToXML(String& packageXml, IDTSEvents events)
I had the same issue, and found that the file I was attempting to import had a non-printing character at the end of the second header. Removing this fixed the issue.
Since you're looking to resolve this "urgently", I'll make both a short-term and long-term suggestion:
1) For the short-term, a practical approach:
Does it work, in your situation, to load the spreadsheet in sections?
Will it hurt anything, for you to re-try/re-do the load multiple times, to find the problem?
Or, can you try this load in a test environment?
If so, then try loading the first-half, or the first-1/4, or first 10 rows, etc., until you find the row that's causing the problem. At the very least, you can then load everything but that row... at best, maybe the problem will be easy to find, at that point.
2) For the long-term... do you (or somebody there) have access to modifying the SSIS package?
If so, then I recommend coding error row redirection, within the Data Flow Task: rows with problems go to another destination (red arrow), while rows without problems go to the usual destination (green arrow).
For more on error row redirection, see these links:
A) Intro: Handling Errors in Data
B) Some issues others have run into:
Programmatically configuring error and truncation dispositions for row redirection
Hope that helps...

SSIS throwing exception: Could not load file or assembly 'Interop.ActiveDs..."

I have an SSIS package where I reference Interop.ActiveDs. Within the script editor the type I'm using is recognized and the script builds and saves just fine. When you execute the package it throws the exception
Could not load file or assembly 'Interop.ActiveDs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
When you're in the script editor all of the properties are pointing to a temporary directory. No doubt, when you save and exit the script the temp directory is abandoned. When the script is executed a copy is placed on the file system?. Possibly it does not copy or persist dependent dlls?.
Is it possible to resolve this problem with SSIS?
So far what I'm getting is ActiveDs is COM and SSIS won't do COM? Need to get it registered in GAC?
So there are two issues here when trying to make this work in SSIS
if (result.Properties["uSNChanged"] != null && result.Properties["uSNChanged"].Count > 0)
{
var _uSNChanged = (IADsLargeInteger)result.Properties["uSNChanged"][0];
Output0Buffer.uSNChanged = (_uSNChanged.HighPart << 32) + _uSNChanged.LowPart;
}
First IADsLargeInteger is a COM object. In order to use it you'd need to create an Interop dll and register it in the GAC. This, I believe, is addressed by this post. I haven't tried this since...
Second though, it seems all of this can be avoided if everything is typed correctly to begin with. So in stead of messing around with COM Interop just to do an unnecessary translation, I believe this is the better solution to the issue.
if (result.Properties["uSNChanged"] != null && result.Properties["uSNChanged"].Count > 0)
{
Output0Buffer.uSNChanged = (Int64)result.Properties["uSNChanged"][0];
}

WIX: Using a temporary file during install

I am writing a WIX installer and I have a following requirement:
During installation, I need to pass an absolute path to a file (lets call it A) included in my installer to a COM component, which already exists on the hard drive and is a part of another program. I have already written an appropriate Custom Action which expects a path to the file A. I don't want to include A as a file installed in the Program Files folder and removed during the uninstallation process. Instead, I would like to put A only temporary on the hard drive, call my Custom Action which will cause the COM component to use the content of A, and then remove A from disk. Is there an easy way to accomplish this goal?
I have tried to utilize the Binary Table and store A there, however I don't know how to reference A using absolute path. I know I could put A outside of MSI file but I would like to keep every file installer needs in a single MSI.
Any help would be appreciated.
Deleting a file that MSI installed means that MSI will consider it "broken" and try to auto-repair it if called on to do so. That happens automatically in several cases (e.g., advertised shortcuts and COM registration) so I'd recommend against it. Leave the file there instead -- it's done its job and there's no harm in leaving it there.
I would take this approach.
Install the file "A" into any directory. Run your custom action needed to update the COM component. Then run another custom action or modify the currently written one to remove the file after it is no longer in use. This would leave no trace of the file "A" and if you schedule the custom action to only run during the install you won't have to worry about it on uninstall.