SSIS Package execution throw error DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER [duplicate] - sql

This question already has answers here:
SSIS export to excel
(2 answers)
Closed 6 years ago.
We try to test the simple Import from Excel File saved on a shared path on a server into a SQL Table.
I created the Excel Connection Manager for the Excel source file 97-2003, First row has column names checked.
I created the OLEDB Destination with the selected Table and I mapped the columns.
So fine so good, but when we run the Package the following error is thrown:
Error: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER.
The AcquireConnection method call to the connection manager "Excel Connection Manager"
failed with error code 0xC0202009.
There may be error messages posted before this with more information on why the AcquireConnection
method call failed.
What do we tried:
checked the access to the file
to set Delay Validation to True on Package Level
to recreate the Excel Connection Manager
to deploy the Package and execute inside the Integration Services Catalogs

There is no 64 bit driver for excel 97 - 2003 . The workaround is to run the package using the 32 bit version of the execution utility.
http://technet.microsoft.com/en-us/library/ms141766.aspx
For the design mode in the Project Properties->Degugging Section, set Run64bit RunTime to False

Related

SSIS PAckage ForEach Loop continue

I have a ssis package which exports data from excel files and dump it into a SQL Table. For processing files, I am using a foreach loop and a dataflow opens an excel source and dumps data into ole db destination. If any file is not containing the required tab, I want the ssis package to log error and move to next iteration. I have tried following things but the package fails:
Propagation = false
ForceExecutionResult = Success
How can I handle this?
Attached images are the screen shots of control flow, data flow and progress.
Try on the For Each loop set maximum error count to 0 to ignore all errors.
In your for each loop have an on error sql script to write out if error so they are not lost.

How to pass different excel files to Excel connection manager in SSIS?

I am passing different excel files to SSIS package. I am picking up from folder by using for each loop, mapped variable in that. I am passing that variable to Excel connection manager, but it is not taking. We are getting below error, but if we hardcode the excel file path it is working fine, but I want it should take from for each loop, because we are getting different Excel files, for example: abc.xls or abc(1).xls or abc 03-03-2016. How to handle this in SSIS?
Error:
TITLE: Package Validation Error
------------------------------
Package Validation Error
------------------------------
ADDITIONAL INFORMATION:
Error at Load Attendance data [Excel Source [1]]: SSIS Error Code DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. The AcquireConnection method call to the connection manager "Excel Connection Manager 2" failed with error code 0xC0202009. There may be error messages posted before this with more information on why the AcquireConnection method call failed.
Error at Load Attendance data [SSIS.Pipeline]: component "Excel Source" (1) failed validation and returned error code 0xC020801C.
Error at Load Attendance data [SSIS.Pipeline]: One or more component failed validation.
Error at Load Attendance data: There were errors during task validation.
Error at Tardy Load [Connection manager "Excel Connection Manager 2"]: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft JET Database Engine" Hresult: 0x80004005 Description: "Invalid argument.".
(Microsoft.DataTransformationServices.VsIntegration)
------------------------------
BUTTONS:
OK
------------------------------
This is the approach we took to handle a similar problem:
The For Loop assigns the full path of the Excel file to a variable
In the Excel Connection Manager, set the ExcelFilePath element of the Expressions property to that variable
Inside the loop, we have a Script task that will extract the first sheet name assigning it to a ReadWriteVariable in the Script task:
public void Main()
{
string ConnectionString;
OleDbConnection ExcelConnection;
DataTable TablesInFile;
string FirstSheet = "";
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Dts.Variables["WorkingFolderAndFile"].Value.ToString() + ";Extended Properties=Excel 8.0";
ExcelConnection = new OleDbConnection(ConnectionString);
ExcelConnection.Open();
TablesInFile = ExcelConnection.GetSchema("Tables");
foreach (DataRow SheetInFile in TablesInFile.Rows)
{
FirstSheet = SheetInFile["TABLE_NAME"].ToString();
break;
}
Dts.Variables["WorkingSheetName"].Value = FirstSheet;
ExcelConnection.Close();
ExcelConnection.Dispose();
Dts.TaskResult = (int)ScriptResults.Success;
}
Then in the Excel Source Editor, for Data Access Mode, select: Table name or view name variable. And for the variable name, use the variable that contains the first sheet name that was assigned in the Script task.
Also for the Excel Source, you may also have to set these properties:
ValidateExternalMetadata = False
AccessMode = OpenRowset From Variable
OpenRowsetVariable = the sheet variable
Excel doesn't have the capability to regenerate every time, The same package with CSV will work fine.
But, iF you want to use the excel file for sure then Use an Execute SQL task and use an excel connection manager and add the script.
Example:
CREATE TABLE
`Excel Destination` (
`PromotionKey` INTEGER,
`PromotionAlternateKey` INTEGER,
`EnglishPromotionName` NVARCHAR(255),
`SpanishPromotionName` NVARCHAR(255),
`FrenchPromotionName` NVARCHAR(255),
`DiscountPct` DOUBLE PRECISION,
`EnglishPromotionType` NVARCHAR(50),
`SpanishPromotionType` NVARCHAR(50),
`FrenchPromotionType` NVARCHAR(50),
`EnglishPromotionCategory` NVARCHAR(50),
`SpanishPromotionCategory` NVARCHAR(50),
`FrenchPromotionCategory` NVARCHAR(50),
`StartDate` DATETIME,
`EndDate` DATETIME,
`MinQty` INTEGER,
`MaxQty` INTEGER
)
The query will generate a new excel file everytime you run the package and will solve your issue.
Hope it solves your issue.
Create a variable Excel File source as String and add the location of excel folder ,
create another variable excel file Name as a string and also add one file name to it .
Go back to your connection manager , on one of your excel file ...right click to to properties , under expressions select Excel file Path then #[$Package::ExcelFileSource]+"\"+ #[$Package::ExcelFileName]. This will let you not hard code your excel file names .

SSIS: Export to Dynamic Excel File

I am trying to create a project that will produce a separate excel file for every account in a specific table. The first steps to pull the data into a temp file and load an array variable with the accounts for the loop, this is working fine.
I am getting the 2 errors below. And when I execute the package it fails on the export to excel data flow task.
Error 1 Error loading RAW_DATA_EXPORT.dtsx: The connection string
format is not valid. It must consist of one or more components of the
form X=Y, separated by semicolons. This error occurs when a connection
string with zero components is set on database connection manager.
Error 2 Error loading RAW_DATA_EXPORT.dtsx: The result of the
expression ""\\server\DATA\Status\Testing\Filename" +
#[User::Accts] + ".xls"" on property "ConnectionString" cannot be
written to the property. The expression was evaluated, but cannot be
set on the property.
This is what my dynamic connection string looks like evaluated:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\server\DATA\Status\Testing\Filename03500.xls;Extended Properties="EXCEL 8.0;HDR=YES";
I think the issue is since the excel file are non-existent, the validation fails when it gets to the step. From what I found online I need to either create the sheets through a a script task (not fond of) or use a variable value to create the sheet in the file. I have not been successful on either.
(...) since the excel file are non-existent, the validation fails when it gets to the step.
Have you tried delaying validation in the Data Flow task that exports to Excel? Check Data Flow's properties window.

SQL error unable to copy file

I'v built a program, and I used SQL. It worked fine but suddenly, without changing the code, I got the error message:
Error 3 Unable to copy file "C:\Users\user\documents\visual studio
2010\Projects\Programm\Programm\App_Data\DataBase_log.ldf" to
"bin\Debug\App_Data\DataBase_log.ldf". The process cannot access the
file 'C:\Users\user\documents\visual studio
2010\Projects\Programm\Programm\App_Data\DataBase_log.ldf' because it
is being used by another process.
This is my connection string:
private string ConnectionString()
{
return #"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\App_Data\DataBase.mdf;Initial Catalog=DataBase.mdf;Integrated Security=True;User Instance=True";
}
I'm using SQL server 2008 and Visual studio 2010.
I can't figure out what the problem is and I'd appreciate anyone who helps.
1) Sometimes the vslshost.exe gets stuck from prior run and you can't build again as it has files open. Sometime another build works, other times you have to close VS and reopen. Other times you have go delete the process.
2) If DB will be on end user machine, then ".\SqlExpress" should work

unable to take Date dynamically every day in ssis

I have created SSIS to generate a excel file from sql
and giving file name dynamically depending upon todays date.
I have not yet deployed package because of testing.
When I changed System date to test wether it is able to create file for that date or not
but it is giving me an following error
Error at Data Flow Task [Excel Destination [34]]: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E37.
Error at Data Flow Task [Excel Destination [34]]: Opening a rowset failed. Check that the object exists in the database.
Error at Data Flow Task [SSIS.Pipeline]: "component "Excel Destination" (34)" failed validation and returned validation status "VS_ISBROKEN".
Error at Data Flow Task [SSIS.Pipeline]: One or more component failed validation.
Error at Data Flow Task : There were errors during task validation.
(Microsoft.DataTransformationServices.VsIntegration)
In excel connection manager i have set property excelfilepath in expression
code is #[User::ExcelFileName] + (DT_WSTR, 20) (DT_DBDATE) GETDATE()+".xls"
which is giving evaluated value like C:\2013-05-24.xls
How do I resolved it.
To fix this issue. In the Excel connection manager properties you have to set the "DelayValidation" property to TRUE.