Connection Manager Ignores Expressions With Script Component
Mar 16, 2006
I have written a script source component and attached a flat file connection. The connection string of which is defined by an expression.
However when I get the connectionstring from the connection in the script it has the default filename value of flat file not the value of the expression. This is proved by passing in the filename variable, and comparing the 2.
The flat file has an expression on the ConnectionString of @[User::filename]
Can someone confirm this is a bug.
View 3 Replies
ADVERTISEMENT
Feb 1, 2007
Hello,
I have a question regarding which expressions need to be set to have the excel connection manager be able to create/update a file dynamically. I'm reading a path in from a database and storing it in a variable. The path is just the location of an excel file. What I would like to have happen is that the excel connection manager be dynamic so that if I wanted to change where this file went or the name I could simply change the value in the database.
I've tried setting the expressions, in the Excel connection Manager: ConnectionString,ExcelFilePath, and Servername to the variable \pathfolderfile.xls with no luck. The ConnectionString seems to be a little funny because it contains Provider=Microsoft.Jet.OLEDB.4.0;Data source = ; Extended Properties =; HDR=YES", so I don't know if I can just use that expression and ignore the others or what.
Any help would appreciated,
Phil
View 3 Replies
View Related
Oct 29, 2007
Hi all. Sorry about bothering you again but I have no choice, I'm afraid. This time I have to add a connection manager at runtime. I have a script that examines rows in a huuuuuuuuuuuuge file and it turns out that I will have to redirect different rows into 95 different text files. I would like to avoid the pain of creating the files and connection managers manually. I have a source script component that runs asynchronously (the only way basically it can run as a source) and I wonder whether this time, when I change the connction string on the manager at runtime inside the script, it would run properly. Can anybode tell me, please?
Darek
View 6 Replies
View Related
Jul 6, 2007
The standard flat file connection component does not handle flat files with different column counts on different rows. Since that's the type of file I have to read, I like to create a modified version of the flat file connection manager that can do this. I have found some info in how to create a connection manager. But I can't find anything that tels me how to build one that would be recognized by the flat file source dataflow component.
So how do you build an connection manager that can used by the standard flat file source component? Anyone ever did this or knows were to get the docs?
I know my problem is also solvable by reading the row into a single column and then using a script component to split them but that is not the solution I want.
View 1 Replies
View Related
Feb 14, 2006
Within a data flow I have a script component that I want to perform some data calls from. I want to execute SQL commands to connections already defined in the package's connection manager.
Is there a way to set my script's connection variable to the connection manager connection? Or, can I use the connection manager connections directly from within the script?
View 5 Replies
View Related
Jul 27, 2015
ConnectionManager manager = Microsoft.SqlServer.Dts.Runtime.DtsConvert.GetWrapper(base.Connections.Connection);
IDTSConnectionManagerCache100 cache = manager.InnerObject as IDTSConnectionManagerCache100;
if (cache != null)
{
 System.Windows.Forms.MessageBox.Show("Cache is found.");
}
and use
IDTSConnectionManagerCacheColumn100 id = connMgr.Columns["Id"]; get the column info.
but how do i get the cache connection content ?I want to look in the content in a script component code.Â
View 4 Replies
View Related
Mar 24, 2008
I am using SSIS 2005 on Windows 2003 server. Using Excel Source to dump the data for staging database.
I am getting following error while I execute it through BI studio's execute button.
Please help.
- Sachin
View 2 Replies
View Related
Mar 11, 2008
I have deployed my packages into Sql Server and I am using Configuration File. As my Data Source is Excel, I have changed the connection string during deployment with Server Path. But I am getting the following errors. Actually the File Exist in Path. May I know What is cause of the issue? Do I need to give any permission to execute the package.
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.
component "Excel Source Service Contract Upload" (1) failed validation and returned error code 0xC020801C.
One or more component failed validation.
There were errors during task validation.
DTS_E_OLEDBERROR, Error Code: 0x80004005 Source: "MS JET DB Engine" Description : Path is not valid
View 27 Replies
View Related
Dec 27, 2007
Hi,
I am working on SQL Server 2005 (x64) with Windows Server 2003 (x64) operating system. I am having a major issue in SSIS. Here is the detailed explanation of the issue :
I have an EXCEL file in 2003 / 2007 version. It contains some data. I want to import the data using SSIS into SQL Server 2005 (x64) database table. I have taken "EXCEL FILE SOURCE" and "SQL Server DESTINATION". It was failed on importing data. Surprisingly it works fine in SQL Server 2005 (x32). Can you please explain why it is NOT woking on (x64) ?
Here is the error code i am getting:
[Excel Source [1]] Error: The AcquireConnection method call to the connection manager "Excel Connection Manager" failed with error code 0xC0202009.
Appreciate your time and patience !!
Thanks
View 3 Replies
View Related
Mar 17, 2008
Greetings,
I have an SSIS package that I need to modify. It was developed in Visual Studio 2005 and runs faithfully in production on SQL Server 2005. Suddenly, I can't open the package on my own workstation. I see a big red "X" image and a message stating "Microsoft Visual Studio is unable to load this document." The real reason the document can't be loaded appears to be:
Error loading DataWarehouseLoader.dtsx: The connection type "OLEDB" specified for connection manager "Warehouse Logging OLE DB" is not recognized as a valid connection manager type. This error is returned when an attempt is made to create a connection manager for an unknown connection type. Check the spelling in the connection type name.
Does anyone know what causes this and what I can do? The package has been in production for 9 months and I've never seen this problem before.
Thanks,
BCB
View 10 Replies
View Related
Feb 23, 2006
I have been writing a custom source adapter that uses a file connection within the connection manager. If I hard-code a specific file then the component works. However if I use a file connection that has an expression defined which updates the connection, for example when you have a for-each loop looping over a set files. The file connection doesn€™t seem to re-evaluate expression each time you access the file connection via the code. Is there something that I am missing or is there a bug?
View 10 Replies
View Related
May 2, 2007
Hi Experts here,
Sorry if this query had been raised earlier. While In DTS Packages we retrieve connection details for all Connections in a Package from a table and then assign them to the following global Variables
gv_Source_User, gv_Source_Pwd, gv_Source_DataSource, gv_Source_InitialCatalog
Finally we reassign these variables to repective Connection Properties using Dynamic Properties Task. After Migrating to SSIS though we are able to assign almost all variables to Properties of Connection Managers via Expression except the Password which we donot find in the drop down list in order to assign gv_Source_Pwd.
Is there any work around to assign passwords dynamically?
Many Thanks
Subhash Subramanyam
View 4 Replies
View Related
Feb 6, 2008
I have a package that uses a for loop to iterate through an unknown amount of excel files and pull their data into a table. However, there will be cases when the file is corrupted or has some sort of problem so that either the transformation will fail or the excel data source will fail with an oledb connection error.
Could anyone suggest a clean way to trap these errors? Specifically, the "Cannot Aquire Connection from Connection Manager", which is the excel connection.
Thanks,
John T
View 3 Replies
View Related
Jun 26, 2007
I am thinking I must be doing something wrong..
I have dozens of packages that work as follows (high level... not listing all the steps just those relevant to this question)
- Get list of files in directory
- Join list to list of already imported files
- Those not imported put into an ADO.Net object
- Loop through ADO.Net record (which contains the filename) and import each file.
I just set the connection string of the flat file to be the variable in the loop (expressions.. connection string). Pretty standard stuff. Now I tried to do the same with a file connection (not a flat file) becuase I have a source that is from a mainframe and I had to write a custom source script and its not working. Basically the source script uses
oRead = oFile.OpenText(Me.Connections.FileConnection.ConnectionString)
And it opens the same file over and over (not ever changing as the ConnectionString expression changes like it does for flat files) and imports it even though I have verified the loop is correctly looping through all the different files.
Any thoughts as to what I am doing wrong?
View 3 Replies
View Related
Dec 11, 2007
I want to have this query insert a bunch of XML but i get this error...
Msg 128, Level 15, State 1, Procedure InsertTimeCard, Line 117
The name "ExpenseRptID" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted.
Msg 128, Level 15, State 1, Procedure InsertTimeCard, Line 151
The name "DateWorked" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted.
What am i doing wrong...Can anyone help me out!! Thanks!!
p.s I know this query looks crazy...
Code Block
IF EXISTS (SELECT NAME FROM sysobjects WHERE NAME = 'InsertTimeCard' AND type = 'P' AND uid=(Select uid from sysusers where name=current_user))
BEGIN
DROP PROCEDURE InsertTimeCard
END
go
/*********************************************************************************************************
** PROC NAME : InsertTimeCardHoursWorked
**
** AUTHOR : Demetrius Powers
**
** TODO/ISSUES
** ------------------------------------------------------------------------------------
**
**
** MODIFICATIONS
** ------------------------------------------------------------------------------------
** Name Date Comment
** ------------------------------------------------------------------------------------
** Powers 12/11/2007 -Initial Creation
*********************************************************************************************************/
CREATE PROCEDURE InsertTimeCard
@DateCreated DateTime,
@EmployeeID int,
@DateEntered DateTime,
@SerializedXML text,
@Result int output
as
declare @NewTimeCardID int
select @NewTimeCardID = max(TimeCardID) from OPS_TimeCards
-- proc settings
SET NOCOUNT ON
-- local variables
DECLARE @intDoc int
DECLARE @bolOpen bit
SET @bolOpen = 0
--Prepare the XML document to be loaded
EXEC sp_xml_preparedocument @intDoc OUTPUT, @SerializedXML
-- check for error
IF @@ERROR <> 0
GOTO ErrorHandler
--The document was prepared so set the boolean indicator so we know to close it if an error occurs.
SET @bolOpen = 1
--Create temp variable to store values inthe XML document
DECLARE @tempXMLTimeCardExpense TABLE
(
TimeCardExpenseID int not null identity(1,1),
TimeCardID int,
ExpenseRptID int,
ExpenseDate datetime,
ProjectID int,
ExpenseDescription nvarchar(510),
ExpenseAmount money,
ExpenseCodeID int,
AttachedRct bit,
SubmittoExpRep bit
)
DECLARE @tempXMLTimeCardWorked TABLE
(
TimeCardDetailID int not null identity(1,1),
TimeCardID int,
DateWorked DateTime,
ProjectID int,
WorkDescription nvarchar(510),
BillableHours float,
BillingRate money,
WorkCodeID int,
Location nvarchar(50)
)
-- begin trans
BEGIN TRANSACTION
insert OPS_TimeCards(NewTimeCardID, DateCreated, EmployeeID, DateEntered, Paid)
values (@NewTimeCardID, @DateCreated, @EmployeeID, @DateEntered, 0)
-- check for error
IF @@ERROR <> 0
GOTO ErrorHandler
--Now use @intDoc with XPATH style queries on the XML
INSERT @tempXMLTimeCardExpense (TimeCardID, ExpenseRptID, ExpenseDate, ProjectID, ExpenseDescription, ExpenseAmount, ExpenseCodeID, AttachedRct, SubmittoExpRep)
SELECT @NewTimeCardID, ExpenseRptID, ExpenseDate, ProjectID, ExpenseDescription, ExpenseAmount, ExpenseCodeID, AttachedRct, SubmittoExpRep
FROM OPENXML(@intDoc, '/ArrayOfTimeCardExpense/TimeCardExpense', 2)
WITH ( ExpenseRptID int 'ExpenseRptID',
ExpenseDate datetime 'ExpenseDate',
ProjectID int 'ProjectID',
ExpenseDescription nvarchar(510) 'ExpenseDescription',
ExpenseAmount money 'ExpenseAmount',
ExpenseCodeID int 'ExpenseCodeID',
AttachedRct bit 'AttachedRct',
SubmittoExpRep bit 'SubmittoExpRep')
-- check for error
IF @@ERROR <> 0
GOTO ErrorHandler
-- remove XML doc from memory
EXEC sp_xml_removedocument @intDoc
SET @bolOpen = 0
INSERT OPS_TimeCardExpenses(TimeCardID, ExpenseRptID, ExpenseDate, ProjectID, ExpenseDescription, ExpenseAmount, ExpenseCodeID, AttachedRct, SubmittoExpRep)
Values(@NewTimeCardID, ExpenseRptID, ExpenseDate, ProjectID, ExpenseDescription, ExpenseAmount, ExpenseCodeID, AttachedRct, SubmittoExpRep)
select @NewTimeCardID, ExpenseRptID, ExpenseDate, ProjectID, ExpenseDescription, ExpenseAmount, ExpenseCodeID, AttachedRct, SubmittoExpRep
from @tempXMLTimeCardExpense
-- check for error
IF @@ERROR <> 0
GOTO ErrorHandler
-- For time worked...
INSERT @tempXMLTimeCardWorked(TimeCardID, DateWorked, ProjectID, WorkDescription, BillableHours, BillingRate, WorkCodeID, Location)
SELECT @NewTimeCardID, DateWorked, ProjectID, WorkDescription, BilliableHours, BillingRate, WorkCodeID, Location
FROM OPENXML(@intDoc, '/ArrayOfTimeCardWorked/TimeCardWorked', 2)
WITH ( DateWorked DateTime 'DateWorked',
ProjectID datetime 'ProjectID',
WorkDescription nvarchar(max) 'WorkDescription',
BilliableHours float 'BilliableHours',
BillingRate money 'BillingRate',
WorkCodeID int 'WorkCodeID',
Location nvarchar(50)'Location')
-- check for error
IF @@ERROR <> 0
GOTO ErrorHandler
-- remove XML doc from memory
EXEC sp_xml_removedocument @intDoc
SET @bolOpen = 0
INSERT OPS_TimeCardHours(TimeCardID, DateWorked, ProjectID, WorkDescription, BillableHours, BillingRate, WorkCodeID, Location)
Values(@NewTimeCardID,DateWorked, ProjectID, WorkDescription, BillableHours, BillingRate, WorkCodeID, Location)
select @NewTimeCardID ,DateWorked, ProjectID, WorkDescription, BillableHours, BillingRate, WorkCodeID, Location
from @tempXMLTimeCardWorked
-- commit transaction, and exit
COMMIT TRANSACTION
set @Result = @NewTimeCardID
RETURN 0
-- Error Handler
ErrorHandler:
-- see if transaction is open
IF @@TRANCOUNT > 0
BEGIN
-- rollback tran
ROLLBACK TRANSACTION
END
-- set failure values
SET @Result = -1
RETURN -1
go
View 1 Replies
View Related
Apr 7, 2008
When running the project in debug mode or non-debug mode, I get the following error from MS Visual Studio:
TITLE: Package Validation Error
------------------------------
Package Validation Error
------------------------------
ADDITIONAL INFORMATION:
Error at Package [Connection manager "SYBASE_CONNECTION"]: The connection manager failed to defect from the transaction.
(Microsoft.DataTransformationServices.VsIntegration)
------------------------------
BUTTONS:
OK
------------------------------
Any ideas???
View 8 Replies
View Related
Apr 15, 2015
I use SQL Server 2012 and visual studio 2010.I created SSIS Project with task "Execute Package". Control flow view as: Package1 (execute package) -> Package2 (data flow).Data flow in Package2 view as: ADO.NET source -> ADO.NET destination.
When I started Package2, it's work. I havn't errors.But when I started Package 1 I have error "Unable to get managed connection from the Connection Manager runtime". In execution log I see that ADO.NET source produced this error on verification stage. Package failed on verification stage, not on execution stage.Why when I started Package 2 it work, but when I started Package1 (and Package1 started Package2) it failed?
View 14 Replies
View Related
Feb 14, 2008
Hi All,
I am getting the following error if I am using the package "Transaction Option=Required" while running through Sql Job:
The AcquireConnection method call to the connection manager "<connection name>" failed with error code 0xC0202009.
while I running the SSIS package on BI environment, I am getting the following error:
[Connection manager "<connection name>"] Error: The SSIS Runtime has failed to enlist the OLE DB connection in a distributed transaction with error 0x8004D00A "Unable to enlist in the transaction.".
I know the alternative solution is to make the "Transaction Option=Supported", but in my case I have run the whole flow in a single transaction. I came to know that this has been fixed in the service pack1(ref. to http://support.microsoft.com/kb/914375). FYI.. some time it was running successful.
I have taken all the necessary step to run the SSIS package in a distributed transaction(like the steps for MSDTC) and also created the package flow in a sequence.
I was going through the link - http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=160340&SiteID=1 but all those didn't solve my problem.
If anyone can help me it will be great. or it is a bug in SSIS?
Thanks.
Jena
View 5 Replies
View Related
Jun 22, 2006
I have a Rounding error: Between flat file connection manager Source & OLE DB Connection Destination (SQL Server 2005) in my Dataflow.
File looks like this lets call column names Col A,B,C,D
70410000 RD1 1223631.92 196042.42
70329000 ICD 11025.84 3353.88
71167300 COL 104270.59 24676.96
flat file connection manager settings: first row Column names then Advanced tab Col A float , Col B float , Col C string ,Col D float ,
OLE DB Connection Destination (SQL Server 2005)
CREATE TABLE [dbo].[PT_CUST_ABR](
[PARTY_NO] [float] NULL,
[PARTY_NAME] [varchar](75) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[TELECOMABR] [float] NULL,
[GENIABR] [float] NULL,
Problem: ColA (Source) Rounding error to PARTY_NO (Destination)
I have a field of text of in a flat file that the flat file connection manager Source picks up correctly €œ70000893€?
However when it gets the OLE DB Connection Destination the data has changed to 70000896. That€™s before its even Written to the database.
The only clue that something is wrong in the middle is the great Data viewer shows the number as 7.000009E+07
Other clues looking at the data it appears there is a rounding error on only the number that dont end in 00
ColA (Source) PARTY_NO (Destination)
71167300 71167296
70329000 70329000
70410000 70410000
Any ideas people?
Thanks in advance
Dave
View 3 Replies
View Related
Dec 17, 2007
hi all,
i got the error, when i run my package after deploy into the server machine;
i can able to run that package in my local machine, if i deploy it to the server or some remote machine, its not running, and rises error messages, that says cant accquire connection from the connection manager;
the problem might be with the login name and password; i could not see any password in any of my config file, or connection manager while running the package.
how to resolve this problem?? please help me!
View 6 Replies
View Related
Feb 19, 2015
I have a child package where the ConnectionString property of a Connection Manager is set by a Parent Package Variable Configuration. I set up a script task that brings up a message box with the value of the ConnectionString property right before the dataflow task.
MessageBox.Show(Dts.Connections["CPU_*"].ConnectionString.ToString());When I run the parent package, the message box shows that the connection string is changing with every iteration, but in the dataflow it always draws the data from the same source.
The connection manager is an ADO.Net type, RetainSameConnection is set to False, and I've been researching this for days.
(Update 2/23/2015): To make this stranger, when I look at the diagnostic logs, they tell me that when the new connections are being opened they are using the new connection strings.
View 2 Replies
View Related
Mar 30, 2007
Hello,
I've created a SSIS Solution and have created Data Sources. I have two packages. One was created before the Data Sources, and one was created after. The package that was created after is using connections from the Data Sources. I want to change the package before the Data Soruces were created to use them, but when I right click in the Connection Managers pane "New Connection From Data Source.." is not an option.
Did I not add it to the Solution properly?
How do I get it to show?
Did I not refresh something?
Please provide the how if you figure it out.
Thanks
View 4 Replies
View Related
Jul 26, 2006
How would one go about using an ODBC connection with SSIS. I'm trying to ETL some Sybase ASE data, but I get the error when I try it:
"cannot acquire a managed connection from the run-time connection manager"
This wasn't any help:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=169777&SiteID=1
View 1 Replies
View Related
Jul 3, 2007
This is the first time I have used SSIS, so please bear with the ignorance.
I have a super simple package that inserts x000's of rows into a temporary table. The data source is a file that the user will upload. I need to be able to tell the package what file to upload. I'm thinking the simplest thing would be to edit the connectionString property of the SourceConnectionFlatFile at runtime. Is this possible? What form should the file path be in (UNC, other)? And, are there any other considerations I should be aware of?
Thanks!
View 1 Replies
View Related
Aug 9, 2006
Is there anyone who tried to use a connection from connection manager to create a new connection in a script task? Including the password?
Now i passed the connection to the script task and called it in the vb script but then the password is not passed into the connect string.
Im searching for an example that works with passing the password in the connectstring?
Any help will be greatfull.
View 1 Replies
View Related
Oct 26, 2007
Hello,
I have a package that has a data lfow task. this task imports data from a db2 database (using the IBM Ole DB provider fro db2) and adds it to sql server database table. This package was created on the server. then though version control (using TFS source control) I check out the package on my local machine. and when I open the package I get the foll 3 errors.
Error 1 Validation error. Import Account Num from BMGP_BDR: DTS.Pipeline: The component metadata for "component "DataReader Source" (1113)" could not be upgraded to the newer version of the component. The PerformUpgrade method failed.
Error 2 Error loading BMAG Download Xref Tables - bmag.dtsx: Microsoft.SqlServer.Dts.Pipeline.ComponentVersionMismatchException: The version of component "DataReader Source" (1113) 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(IDTSManagedComponentWrapper90 wrapper, Int32 lPipelineVersion)
Error 3 Error loading BMAG Download Xref Tables - bmag.dtsx: The component metadata for "component "DataReader Source" (1113)" could not be upgraded to the newer version of the component. The PerformUpgrade method failed.
Please advice.
Thank you.
View 7 Replies
View Related
Jan 23, 2007
Hi,
I have a package which reads an Access file from a folder. My connection manager to this file is .NET providers for OledbMicrosoft Jet 4.0 OLE DB Provider.
Package works from my computer. But when I execute it on the server as a SQL Agent job, I get
The component metadata for "component "DataReader Source" (1) could not be upgraded to the newer version of the component. The PerformUpgrade method failed.
I copied the mdb file to a folder on the server which my packages have no problem reading data from.
My packages run under the same domain account as defined in proxies.
Appreciate a help.
Gulden
View 4 Replies
View Related
Jan 16, 2008
Is there a way by which we can make the Connection in the connection manager retry for a certain amount of time?
I have a DataFlow Task which uses a OLE Source which is connected to a database. there are time when the connection to the database is not available due to some transport level error. so i wanted the connection manger to make a couple of tries before giving up and saying that it was not able to connect and it timed out..
i have the Connect TimeOut and the General Timeout properties set to 0, but is there a way to retry?
Thanks for any help in advance
View 1 Replies
View Related
Jul 13, 2007
My source files are in C:Process folder. File names are in the format proc*.csv
I am using foreach loop container to iterate over the files in folder "C:Process"
I have a user variable "filename"
The order of my tasks
ForEach - Data Flow task - File System Task
In Data Flow task, I have ole db source which should take the dynamic filename from user variable "filename". whats happening is when i give fixed filename, without foreach loop container the package is working fine.
with dynamic filename, I am not able to run the package because of ole db source Error - cannot aquire connection from connection manager.
Thanks for u'r help.
View 9 Replies
View Related
Jun 1, 2007
I'm currently using:
Dts.Connections.Item("myADO.NET connection").AcquireConnection(Nothing)Dim conn As New SqlClient.SqlConnection(Dts.Connections.Item("myADO.NET connection").ConnectionString)
conn.Open()
This seems silly, in that I'm not really using the same connection, but using the connection string of a connection that already exists. And, for my purposes, it's not working currently, because I've switched from Windows Authentication to SQL Auth... and the password isn't coming over in the ConnectionString property.How do I re-use the exact same ADO.NET connection I have in my connection manager in a script task? That's the recommended way to go, right?
View 3 Replies
View Related
Jul 19, 2007
Hallo,
I have deleted one of my file connection from Connection Manager (and
Executed ProcessTask which used it), however
trying to load the package I always get the error:
"Error loading MyPackage.dtsx: The connection "MyDeletedConnectionName" is not found.
This error is thrown by Connections collection when the specific connection element is not found."
I tried to Clean, Rebulid my project, but it doesn't help.
Does anybody know, how to solve it? Where this reference is saved?
Thank you.
Anna
View 3 Replies
View Related
Jan 15, 2007
Hi,
I'm on writing a custom data flow component (transformation). For this I need access to an external datasource. As best practice, it seems that you should use a connectionmanager in the package.
But I don't really know how to access them.
I've overwritten the AquireConnections() to lookup in the RuntimeConnectionCollection for the connection managers. But It seems it doesnt get called. If I call it my own, for example in validate (just for debugging purposes) the collection is empty, although there are two connectionmanagers in the package.
What am I doing wrong or has someone a code snippet for me.
Thanks T.
View 1 Replies
View Related
Feb 10, 2006
Hello,
Greetings, and Happy Friday. I want to check myself in regards to the proper use of connections in a data flow script component being used as a transformation. I want to ensure that the solution is ideal from a performance standpoint, but more importantly that there won't be any resource leaks from connections that are not being closed or objects that are not being disposed properly.
This transformation script component is writing to a table based on the rows that pass through Input0_ProcessInputRow(). What I'm doing so far is, in the script component script, I've declared a class-level variable of type System.Data.SqlClient.SqlConnection. In the PreExecute() event handler I am initializing this connection with the following code (which comes after the call to MyBase.PreExecute()):
Dim connMgr As IDTSConnectionManager90 connMgr = Me.Connections.JobDB adoConn = CType(connMgr.AcquireConnection(Nothing), SqlClient.SqlConnection) If adoConn.State <> ConnectionState.Open Then adoConn.Open() End If connMgr = Nothing
The adoConn variable referred to there is the class-level variable. So, my first questions:
Is this the best way to initialize the connection? And is that code checking adoConn.State necessary? Can I pretty much assume that the connection manager is going to give me an open connection?
Then in the PostExecute() event handler I have this code (again, after the MyBase call):
If Not (adoConn Is Nothing) Then
If adoConn.State = ConnectionState.Open Then
adoConn.Close()
End If
adoConn.Dispose()
adoConn = Nothing
End If
Next questions:
Is this adoConn variable actually holding a reference to an object whose primary owner is in the connection manager? Is it necessary to close my SqlConnection this way, or is that going to actually close the connection manager's connection?
I'm also wondering whether I need to have this same code in the script component's Finalize() handler also...if there's an error I don't want the resource to leak. Or will PostExecute() fire even if there's an error in Input0_ProcessInputRow()?
Thanks in advance,
Dan
View 3 Replies
View Related