Any Way To Call A Package From A Script Component?
Jul 26, 2006Just wondering if it's possible to call a package from within a script component. I'd think so, but not quite sure how to.
Thanks,
Jeff Tolman
E&M Electric
Just wondering if it's possible to call a package from within a script component. I'd think so, but not quite sure how to.
Thanks,
Jeff Tolman
E&M Electric
I have a custom component that has no editor (i.e. NoEditor=TRUE in DtsPipelineComponent attribute).
This component derives all of its metadata based on the input (hence no editor is needed). What this means is that if the input changes in any way (e.g. the datatype of a column changes) my component will fail validation. That's not a problem, the problem is my Validate() method returns DTSValidationStatus.VS_NEEDSNEWMETADATA but ReinitializeMetaData() is not being called.
I get the familiar warning from the component:
Warning 1 Validation warning. Data Flow Task: Normaliser: The component has inconsistent metadata. TestHarness.dtsx 0 0
and when I double-click on the component I get the familiar dialog box:
TITLE: Editing Component
------------------------------
The component is not in a valid state. Do you want the component to fix itself automatically?
------------------------------
BUTTONS:
&Yes
&No
Cancel
------------------------------
but when I click on 'Yes', nothing happens. RMD never gets called.
The workaround is to detach and reattach the input (which results in a call to ReinitializeMetadata() ) or set NoEditor=FALSE in DtsPipelineComponent attribute but I'd rather not have to do that because strictly speaking the user has no need to edit the component through advanced properties.
Is there another way around this problem? Is there a way to call RMD on a component that has no editor?
Thanks
Jamie
[Microsoft follow-up]
Appreciate if anyone can show me the code to call a web service from Script Component ?
I cannot use the Web Service Task. Because parameters to the webservice are from rows of data inside Data Flow Task.
Thanks !!
hi,
I was just trying to add COM reference but I don't see how.
Let me know any info about this.
TIA
Hi Guys,
I am new to SSIS. Heree is the transformation I need to do. In database one, I have tables:
A
B
C
Where B is a detailed table of A, and C is a "derived" table of B. There is a one to one relationship between B and C, but there may be more than one record in B for each record in A.
In database two, we have the table structure:
AA
CC
And there is a one to one relationship between AA and CC. And I need to design a transformation to migrate data from database one to database two.
Table A(->AA) and B(->BB) will be easy, just one to one migration.
The mapping rule for table C(->CC) they decided was: I need to concate each record in B and C and for a record in CC. For example, suppose we have:
A1
B1(C1)
B2(C2)
A2
B3(C3)
B4(C4)
B5(C5)
Then we will have the following records in database two:
A_1
(B1+C1+B2+C2)
A2
(B3+C3 + B4+C4 + B5+C5)
I looked through all the stock data flow components, and it seems to me that none of them can perform this task, so I am thinking to design a Script transform component to do the task.
I have written the script:
in each ProcessInputRow() sub, I check record's foreign key to A, and if they are the same I concate the records, then I put them into a VB.NET collection. Once all the records are processed, in the PostExecute() function, I count the number of new rows, (in the above example 2), then I call AddRow to add the rows, by:
OutputBuffer.AddRow()
But this does not work, I got "Object reference not set to an instance of an object". It seems that in PostExecute, the OutputBuffer is not longer valid?
Help please! :)
Is there a better way of doing what I am trying to do?
Thanks!
Wenbiao
We have schedule process server, calling SSIS package via command line (see below) to physical SSIS server. Get message "insufficient for component" and package call bombs.
Facts:
1. schedule process server has Workstation tools / Clients / Connectivity for SSIS loaded
2. SSIS is 2005, SP1
What are we missing?
c:>dtexec /DTS "File SystemSalesDWgyp_dm_carrier" /SERVER BPATLQDDW /CONFIGFILE "\bpatlqddwd$SSISSalesDWgypdm.dtsconfig" /MAXCONCURRENT " -1 " /CHECKPOINTING OFF /REPORTING V
Error: 2006-11-09 10:43:34.94
Code: 0xC00470FE
Source: DTF - Xfer DW to DM DIM_CARRIER DTS.Pipeline
Description: The product level is insufficient for component "Slowly Changing Dimension" (289).
End Error
Error: 2006-11-09 10:43:34.94
Code: 0xC00470FE
Source: DTF - Xfer DW to DM DIM_CARRIER DTS.Pipeline
Description: The product level is insufficient for component "OLE DB Command" (775).
End Error
Warning: 2006-11-09 10:43:34.94
Code: 0x80019002
Source: gyp_dm_carrier
Description: The Execution method succeeded, but the number of errors raised (2) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
End Warning
DTExec: The package execution returned DTSER_FAILURE (1).
Started: 10:43:32 AM
Finished: 10:43:34 AM
Elapsed: 2.383 seconds
I tried to access a dot net assembly (.dll) file in ssis script component using following steps.
Create new Script Task in Data Flow Task
Edit Design Script button-> Loads script Project in MS VSA
Locate Object Browser
Select Custom Component Set from the dropdown and hit browse button
Browse and place the custom component dll (This Custom component dll has to be in GAC - Global assembly cache before browsing)
Select the namespace from the Component list of the object browser and click on €œAdd to references to Selected project in the solution explorer€? button
Write Imports <namespace> in the script code to invoke class methods from the .NET custom component
The following steps worked properly with June CTP version of yukon.In september CTP version of Yukon in SSIS when i browse the dot net assembly with the same above steps i get a error stating " The file could not be browsed ".Can anybody help me in the same.
Prashant Utekar
I am trying to cleanly shutdown a dataflow task, which contains a script component, when RunningPackage.Stop() is called from the SSIS runtime.
I've been going in ever decreasing circles with no success - it looks like the cleanest way to find out whether RunningPackage.Stop() has been called is to call FireQueryCancel(). But I can't find any reference to anything useful in a dataflow task script component that gives me something that implements IDTSComponentEvents. The nearest thing seems to be Me.ComponentMetaData which gives a reference to IDTSComponentMetaData90, but this only has methods for calling FireError, FireInformation, FireProgress, FireWarning, and FireCustomEvent. But no FireQueryCancel.
Is there a way in a script component that I can find out the state of QueryCancel?
Any help would be apprecieated.
I would like to fetch the data flow component name while package is executing. Since system variable named [System::SourceName] only fetches name of the control flow tasks? Is there a way to capture them?
View 5 Replies View RelatedI run into some issues and really need some expert help here.
Here is the problem. I have two packages (parent.dtsx and child.dtsx). Both package have its own configuration file (parent.dtsConfig and child.dtsConfig). The file Child.dtsConfig contains a variable (i.e. "X") that is to be used by Child.dtsx.
Inside parent.dtsx. there is a package-task that calls into Child.dtsx. It worked perfectly well if I run parent.dtsx using Dtexec or from inside SSIS's IDE.
Now I want to programmably call "parent.dtsx" from my C# code. I loaded package using "app.LoadPackage"... Inside C# code, I want to reconfigure Child-package's variable ("X"). I then loaded in "Child.dtsx". However when I run "parent.dtsx" and child.dtsx still loads the original value for "X". The reconfigured value for "X" is not updated.
Please help on how to get around this issue.
Thanks.
Hi SQL Colleagues:
Is it possible for me to call a DTS package from within a stored procedure? If it is not possible to do so directly, would I at least be able to call the package through a job?
Thanks!!!
Don
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.
Can you call a DTS package using VBA (specifically from Excel). I would liketo have a command button to launch a DTS package that extracts data from thespreadsheet to SQL Server. Today I have to open up Enterprise Manager to dothis.Any code examples would be great too if this is possible.Thanks,Chad
View 1 Replies View RelatedHi. Is it possible to call an executable that resides on another server from an SSIS package? If that's not possible, is it possible to call an EXE that resides on the SQL Server box itself? Thank you
View 3 Replies View RelatedHi,
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
I'm a rookie with MSSQL. I need to run a DTS package to export a result setto an MX Excel spread sheet. I need to call the DTS from a stored procedureand pass it three values, depending on the input parameters to the storedproc.DTS package is no problem. Pretty easy with the DTS wizard. My problem isthat I can't figure out how to instansiate the DTS package object from astored proc and pass the three values as parameters to the DTS package sothey can populate the parameters I created in it.I found an article related to it, but I'm too much of a rookie to grasp it.It showed how to do this from a stored procedure:EXEC @hr = sp_OASetProperty @oPKG, 'GlobalVariables("MyGVName").Value,'MyGVValue'IF @hr <> 0BEGINPRINT '*** GlobalVariable Assignment Failed'EXEC sp_displayoaerrorinfo @oPKG, @hrENDI have three values and tree global variables to populate. Do I need to dothe above 3 times?How do I instantiate the package object? I've read up some on sp_OACreate,but I don't get it, yet.How do I initiate the variable @oPKG?It contains the name of the sp_OACreate string, right? How do I address aDTS package in the sp_OACreate string?I would really appreciate just writing out the sp_OACreate string and how Ipass values for three existing global variables to a DTS package named"DTS_1".I'm under some real pressure to get this done.Thanks for any help I can get.Gunny
View 1 Replies View RelatedI have an SSIS package stored on the file system and I want to execute it from a Visual Studio 2005 VB project. I have searched the internet for examples and have been unable to find any examples. I gather that I will be using SQLSMO however I'm at a loss on how to do this task. Any help is appreciated! Thanks.
Karen
Hi,
I wanted to know if i can a DTS package using a stored procedure and if yes how should i do it.
Regards,
Karen
Have a parent package that calls many child packages (over 30) for a daily data warehouse update. On any given day, it randomly fails to call a child package with the following error:
Error 0x800706BE while preparing to load the package. The remote procedure call failed.
Its not failing the same package each day. I need a better explanation of this error message.
Environment: SQL2005 Enterprise Dec2005 RTM on Itanium64 with Windows DataCenter.
Hi,
I have several .xls files in a folder. I want to process all .xls file one by one. The following script will give the file name using a loop. How I can call another package by passing the name of file to it.
Dim objFSO, objFolder, colFiles, objFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(DTSGlobalVariables("gvFolder").value)
Set colFiles = objFolder.Files
If colFiles.Count > 0 then
For Each objFile in colFiles
If Ucase(Right(objFile,4)) = ".XLS" then
' How to call a another Package by Passing the objFile to it
End if
Next
End if
Thanks
:)
I have declared a variable XYZ in Parent package
Similarly I have declared ABC in Child package and have done the configuration.
I have assigned some value to XYZ
How to get the value in Child Package.
Hello,
is there any way to execute a SSIS package at the SQL Server programatically from a remote computer? (I use .net 2)
I don't need variables or return values, I only want to start the package. I know that it is easier to do that job with a webservice etc on the SQL Server but I cannot use such.
A method to call a package from a stored procedure would also help me a lot
Kind regards, _Rodney_
I need to be able to call a SSIS package with a specific parameter for one of the variables. Basically the package needs to be triggered from an application (.NET, C#) with a specific value.
The package is stored in the SQL Server (in Stored packages).
I have seen the article on dtexec and the SET flag, however we do not want to turn on xp_cmdshell on the SQL server due to the security implications, and that seems to be the only way to call dtexec
I have seen another article that says you can have a job invoke a package then have a specific user granted permission to the job, but that doesn't address how to set the parameter/variable for the package.
There are actually some other steps that technically need to run using the same parameter, so ideally if I could have a stored procedure call the SSIS package, then the subsequent toher stored procedures using the sent in parameter that would be great. I just can't figure out how to do this securely (as xp_cmdshell is not considered secure).
Thanks for any comments.
Hi All,
I need your help to call an SSIS package using ASP.NET. I have deployed the package using SQL server deployment with an windows authentication. I need to call that package from a remote machine. Also i need to assign a value for a variable in that package while calling it from ASP.NET.
Plz let me know the steps to call that package from ASP.NET
Thanks
I have this block of code that is in a child package (see below).
The idea is, I want to be able to run the child package by calling it from the parent package AND sometimes I want to be able to run the child package on its own, in which case it will not have access to the variables in the parent package, i.e. "TEST". That is, the "TEST" variable will not be "seen" by the child package because the TEST variable lives at the parent level, not the child level.
In the case of running the child package on its own, it won't find the TEST variable, and it should fail.
However, I do not want the script task to fail as I have a try catch block but it fails anyway even with the exit try. What am I missing please?
Thank you.
Try
Dim vars As Variables
Dts.VariableDispenser.LockForWrite(€œTEST€?) 'this is a variable in the parent package
Dts.VariableDispenser.GetVariables(vars)
Try
vars(€œTEST€?).Value = €œI€™m Done€?
Catch ex As Exception
Throw ex
Finally
vars.Unlock()
End Try
Catch ex As Exception
€˜ what can I put here so that the script task does not fail?
Exit try
€˜Throw ex - do not want this
End Try
I am writing an ASP.NET intranet application on a Windows XP machine running IIS 5.1 which executes a MS SQL Server 2000 DTS package as part of the process. The application allows the user to select a UNC path of an input source (.txt) file to be procesed by the DTS pacakge and the UNC file path property is then set in the source object name of the DTS package tasks before executing the DTS package. Whenever I run the application using a file path that is on my development machine (the same machine that the web server is on) it works fine. When I select a source file path that is on a network share folder, the DTS package fails with the following error:Event Type: ErrorEvent Source: DataTransformationServicesEvent Category: NoneEvent ID: 81Date: 2/14/2007Time: 12:58:06 PMUser: N/AComputer: PHILSDELL2Description:The execution of the following DTS Package failed: Error Source: Microsoft Data Transformation Services (DTS) PackageError Description:Package failed because Step 'DTSStep_DTSDataPumpTask_2' failed.Error code: 80040428Error Help File:sqldts80.hlpError Help Context ID:700Package Name: ATMRecon_ImportElanACHTxtPackage Description: (null)Package ID: {3A8CC31D-A81F-40B7-BE57-AEB3AA238088}Package Version: {B01420A7-ED22-49A7-B4C7-9FA1732394E3}Package Execution Lineage: {2A9D45E8-35F8-4F0A-8339-7E5E29DA08B7}Executed On: PHILSDELL2Executed By: webaccess23Execution Started: 2/14/2007 12:58:05 PMExecution Completed: 2/14/2007 12:58:06 PMTotal Execution Time: 1.047 secondsPackage Steps execution information:Step 'DTSStep_DTSExecuteSQLTask_1' succeededStep Execution Started: 2/14/2007 12:58:05 PMStep Execution Completed: 2/14/2007 12:58:05 PMTotal Step Execution Time: 0.047 secondsProgress count in Step: 0Step 'DTSStep_DTSExecuteSQLTask_2' succeededStep Execution Started: 2/14/2007 12:58:05 PMStep Execution Completed: 2/14/2007 12:58:05 PMTotal Step Execution Time: 0.047 secondsProgress count in Step: 0Step 'DTSStep_DTSDataPumpTask_1' failedStep Error Source: Microsoft Data Transformation Services Flat File Rowset ProviderStep Error Description:Error opening datafile: Logon failure: unknown user name or bad password.Step Error code: 80004005Step Error Help File:DTSFFile.hlpStep Error Help Context ID:0Step Execution Started: 2/14/2007 12:58:05 PMStep Execution Completed: 2/14/2007 12:58:06 PMTotal Step Execution Time: 1 secondsProgress count in Step: 0Step 'DTSStep_DTSDataPumpTask_2' failedStep Error Source: Microsoft Data Transformation Services Flat File Rowset ProviderStep Error Description:Error opening datafile: Logon failure: unknown user name or bad password.Step Error code: 80004005Step Error Help File:DTSFFile.hlpStep Error Help Context ID:0Step Execution Started: 2/14/2007 12:58:05 PMStep Execution Completed: 2/14/2007 12:58:05 PMTotal Step Execution Time: 0.031 secondsProgress count in Step: 0 When I check the Security Event Log on the server on which the network share is located, I find the following set of messages repeated multiple times:Event Type: Failure AuditEvent Source: SecurityEvent Category: Account Logon Event ID: 680Date: 2/14/2007Time: 1:02:48 PMUser: NT AUTHORITYSYSTEMComputer: FS1ADescription:Logon attempt by: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0 Logon account: ASPNET Source Workstation: PHILSDELL2 Error Code: 0xC000006AEvent Type: Failure AuditEvent Source: SecurityEvent Category: Logon/Logoff Event ID: 529Date: 2/14/2007Time: 1:02:48 PMUser: NT AUTHORITYSYSTEMComputer: FS1ADescription:Logon Failure: Reason: Unknown user name or bad password User Name: ASPNET Domain: PHILSDELL2 Logon Type: 3 Logon Process: NtLmSsp Authentication Package: NTLM Workstation Name: PHILSDELL2 Caller User Name: - Caller Domain: - Caller Logon ID: - Caller Process ID: - Transited Services: - Source Network Address: 10.120.4.61 Source Port: 0The problem appears to be that the DTS package is trying to access the input source file using the local ASPNET Id from PHILSDELL2 which does not have authority to the network share. The ASP.NET application is using impersonation, set up through the web.config file: <identity impersonate="True" userName="registry:HKLMSOFTWARESkylightATMReconidentityASPNET_SETREG,userName" password="registry:HKLMSOFTWARESkylightATMReconidentityASPNET_SETREG,password" />The application can sucessfully access the network share under the impersonated id (the application first verifies the existience of the source files before executing the DTS package). I have wracked my brain trying to determine where the ASPNET security context is coming from to no avail. Can someone shed some light on what security credentials the DTS package is using to access the source files and how to change them?
View 1 Replies View RelatedI am having few queries related to follow.
1. Is it possible to call SSIS package from procedure .
2. Also want to supply parameters to procedure.
3. Can multiple users execute that procedure simultaneously.
4. If yes then will it cause any issue if it is run simultaneously by 10 users.
Hello everyone,
I have implemented a package, which loads data from a flat file into an OLE DB destination. I have added the properties of the OLE DB Connection Manager to the package configuration (XML file), in order to give me enough flexibility for running the package on different databases.
Now I wanted to integrate my package into the application that would call it and I ran into these problems.
A. Call a package from a JAVA application:
I have a JAVA web application, which should provide the source file and finally trigger the load operation.
A1: How can I execute a package from within a JAVA application?
A2: How can I pass parameters to this package?
B. Parallel Package Execution:
If I was able to trigger the package execution from my application, then I can encounter a situation where the package is triggereed to be executed again with different input data before the first package has finished.
B1: Is it possible (from SSIS point of view) that the same package gets executed parallely with different input?
C. Run the package against several databases:
Assuming that I have 5 databases where I load data using this package.
I have created 5 configuration.xml files with the corresponding DB connection properties.
C1: How can I tell the package which configuration file to read from, in order to load the source data into the correct destination? Is it possible to pass the path of the configuration.xml file when executing a package?
Thanks in advance.
Regards,
Samar
Hi, Everyone:
I am getting the following error message when I try to execute a SSIS package from an asp.net page written in C# 2.0. What I am trying to do is basically just click on a button in the web page and it will execute the package. The code to execute the package is pretty simple. I pass the path of the DTS package stored in the local folder. This works fine in the machine where SQL2005 is installed locally. But it fail when I have a seperate Web Server and SQL Server. Any ideas? Do I have to install SSIS or SQL2005 on a web server as well?
Thanks
static public string Execute_SSIS_DTS(string DTS_Path)
{
Microsoft.SqlServer.Dts.Runtime.Application app;
app = new Microsoft.SqlServer.Dts.Runtime.Application();
Package package = app.LoadPackage(DTS_Path, null);
DTSExecResult result = package.Execute();
return result.ToString();
}
Retrieving the COM class factory for component with CLSID {E44847F1-FD8C-4251-B5DA-B04BB22E236E} failed due to the following error: 80040154.
Line 226: static public string Execute_SSIS_DTS(string DTS_Path)
Line 227: {
Line 228: Application app = new Application();
Line 229: Package package = app.LoadPackage(DTS_Path, null);
Line 230: DTSExecResult result = package.Execute();
[COMException (0x80040154): Retrieving the COM class factory for component with CLSID {E44847F1-FD8C-4251-B5DA-B04BB22E236E} failed due to the following error: 80040154.]
Microsoft.SqlServer.Dts.Runtime.Application..ctor() +43
[DtsPipelineException: Retrieving the COM class factory for component with CLSID {E44847F1-FD8C-4251-B5DA-B04BB22E236E} failed due to the following error: 80040154.]
Microsoft.SqlServer.Dts.Runtime.Application..ctor() +169
Utilities.Execute_SSIS_DTS(String DTS_Path) in c:InetpubwwwrootMasterTablesApp_CodeUtilities.cs:228
MasterTables_Admin_MasterTables_LOINC_External.btn_SyncLISTest_Click(Object sender, EventArgs e) in c:InetpubwwwrootMasterTablesMasterTables_CustomMasterTablesCustom_LOINC_External.aspx.cs:98
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +114
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +141
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +32
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3215
I have ssis package which is credated by VS-2010.
I want execute this SSIS package from the stored procedure (SQL server 2005).
How do we connect and get data from SAP database using SSIS 2012/2014.Currently we are extracting data using WebService, and BAPI function call for RFC, but it seems not so much reliable, due to timeout and others. ion providing the link for download of .NET Framework Data Provider for mySAP Business Suite and some sample to invoke and get the data using SSIS.
View 5 Replies View Related
Hi,
I have 3 packages.
- Staging Package
- Dimension Package
- Fact Package
I wanna embed Dimension and Fact packages into Staging Package
so I can run smoothly.
How can I do it?
thanks,
Jerkus
Hi
I had a DTS package on sql2000 which i migrated succesfully to Sql2005 and im able to open the package and execute the package.Now i want to add a new database mail component on this package to send emails to recepients.In short i dont want to use SQL Mail component of Sql2000 which required outlook components,instead i want to use the new features of SSIS to my package which was designed on sql2000.
Is it possible to use the SSIS new features to be incorporated on my old DTS package?
Thanks in advance
Regards
Arvind