How To Create An SSIS Package Correctly By Programming?
Oct 12, 2005Recently I try to create a package completely by c# code,not the ETL tool.
View 9 RepliesRecently I try to create a package completely by c# code,not the ETL tool.
View 9 Replies
I am trying to add a custom dll(IncrementTask avalilable in SQL Server DTS Samples)
as an executable(Task) to an SSIS package.
The following console application consumes the Custom dll:
using System;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Tasks.FileSystemTask;
using Microsoft.SqlServer.Dts.Samples;
using Microsoft.Samples.SqlServer.Dts;
namespace Microsoft.SqlServer.Dts.Samples
{
class Program
{
static void Main(string[] args)
{
Package p = new Package();
// Add a File System task to the package.
//This Line of code works fine.
//TaskHost execPkghost = (TaskHost)p.Executables.Add("STOCKQLTask");
//This line throws the following error: Object reference not set to an instance of an object.
TaskHost execPkghost = (TaskHost)p.Executables.Add("Microsoft.Samples.SqlServer.Dts.IncrementTaskUI,IncrementTaskCS,
Version=1.0.0.0,Culture=Neutral,PublicKeyToken=b23be0feabed1355");
TaskHost thFileSystemTask = execPkghost as TaskHost;
// Iterate through the package Executables collection.
Executables pExecs = p.Executables;
foreach (Executable pExec in pExecs)
{
TaskHost taskHost = (TaskHost)pExec;
Console.WriteLine("Type {0}", taskHost.InnerObject.ToString());
}
Console.Read();
}
}
}
I am getting a runtime error that "object reference has not been set to an instance of the object".
Any help on this is higly appreciated.
Hello All,
I am learning SSIS and I am working through the Wrox book on 2005 SSIS. When I try to Import the files from the AdventureWorks2000 database I cannot see the Human Resources files. I was able to go through the wizard once and see the files and select them and proceed, but now I cannot see them. Please keep in mind I am a newby to this. What should I check for or what am I doing wrong?
Thanks,
Kurt
Is there anyone out there that can help me - please! I'm about to put my head through a wall.
I used to be able to create SSIS packages in VS 05. It's been a while since I've done it, but when I went in the other day, it would let me - all I can do is get errors. It tells me an "error prevented the view from loading" when it opens in control flow (blank packages and ones I created before all this started) and I get this error :
"Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)) (System.Windows.Forms)"
If I go over to the Data Flow tab and there are no errors until I click "Click here to add a new Data Flow task", then I get this :
"Object reference not set to an instance of an object. (Microsoft.DataTransformationServices.Design)"
So... here's what I've tried.
Uninstalled and reinstalled VS 05 and SP1 (this was before I realized the problem was with SQL).
Uninstalled and reinstalled Office 2003 Web Tools.
Made sure all the MSXMLs were registered.
Uninstalled and reinstalled all SQL Servers and Tools/Components.
Made sure all SQL Services were running under Local Account
Made sure Integrated Services service was running.
Applied all SQL patches.
I cannot get this to work and I need to be able to create packages. The only other step I can think of is wiping my computer and I don't want to have to do that.
Please please can anyone help me?? I've been scouring the internet and working on this for 1 day and 1/2.
Can anyone sugest me steps to create the MSI Installer for SSIS packages
Can someone point me to any whitepaper on how to use a Transact SQL script to create an SSIS package. I will need to be able to run the script at various customer sites.
Hi,
I am working on modifying a VB6 app that dynamically creates DTS packages to copy data from one database to another depending on the selections made in UI. The project currently uses DTSPackage object library and DTSDataDump Scripting object library.
We are in the process of upgrading the server to SQL 2005. I am exploring the possibility of replacing code that generates DTS packages on the fly with SSIS packages.
Is it feasible to do this in VB6 ? I have referred to similar posts which focus mainly on VB.NET or C#.
Any help with white paper or sample code would be appreciated.
Thanks in advance
how i will can create a install for SSIS package
View 3 Replies View RelatedI want to create a package that imports data from a Visual Foxpro database to SQL Server 2005 Express database. I used the wizard in BI Development Studio (similar to the DTS in SQL Server 2000) to create a package and noticed that the SQL statements created in the Preparation SQL Task only has code for creating tables. I want to make the package such that it first creates the destination database before creating all the related tables in it! When I tried to edit the SQL code to include DROP DATABASE and/or CREATE DATABASE statements, these were rejected.
Is it possible to do this or do I have to first create the database outside the package and then call the package? I want to make this a seamless process for clients who do not have the know-how of SQL Server database administration.
HELP!!!!!!
hi,
i have to manipulate/calculate an attribute at runtime in a number of dataset within a package.
since the manipulation will be the same for all these datasets and that it has to be done with a script, i am looking to find a way of creating a single instance of this script and call it as and when necessary.
could i use a variable of data type object and pass and retrieve parameters into and out of it?
lets assume the following scenary to illustrate my point.
i have to create a new attribute in two datasets ( ds1, ds2) which is based on the following attributes:
firstname
surname
and that i want to create this new attribute as:
surname, firstname
so i am creating a single string composed of surname plus a comma and firstname.
thus i will be creating a new attributes called custNames for two or more dataset and it tomorrow it is decided that i should be done in a different way then i only need to amend in on place.
i know it is not clear but i will be glad to anwser any queries to clarify this question.
thanks,
Nicolas
Hi All,
I am new to SQL Server 2005, I need Help to create a SSIS package for the below taks,
My task is Refer a Column [Status] in the Logtable which is used to maintain the logs for the running processes, When ever any Rows with the "FAIL" status in Status column occurs in the LogTable then get the Respective ErrorRowNumber and get the Details of the Error from other 2, 3 tables which will be a simple SQL statements, when you get the Error Details then mail these details to the given Email id.
For this I need a help In creating a SSIS package which will continuously check the Status and if any FAIL status occurs then the Error details need to mail to mail id which are stored in the config files of SSIS package.
If any one has better idea to send the mails then please let me know.
if any online tutorial is available that will also help.
Thanks in advance
Dhananjay
Create SSIS package for the below output:
Table
Eno ename Eloc Edept
1 Sid Pune 101,201,301,401,501,601
Output:
Eno ename Eloc Edept
1 Sid Pune 101
1 Sid Pune 201
1 Sid Pune 301
1 Sid Pune 401
1 Sid Pune 501
1 Sid Pune 601
Create a SSIS package for following scenario.I have one excel file which will contain 10 records for Monday, 12 records for Tuesday, 7 on Wed, no records on Thursday so if records are there I get mail if no records are there I didn't get mail daily.
View 2 Replies View RelatedHi,
I want to create a package to import some tables from database X from Server XYZ to database X of server ABC.
(As my X database on server XYZ is gets updating everyday so i need to update it on X of server ABC using the package.)
So i have created a package using the import export data transformationn services.
It runs fine while creating. i.e importing data for the first time. But when i have saved that SSIS package on SQL or File system and scheduled it to run daily, but if fails everytime. I am not getting the error its giving. Because everytime when i go to view history of that package it just gives me messages like step1 started by user xyz and failed.
Can you please help me to sort out this problem.
If possible give me steps which will help me to create package to run above scenario.
you can mail me the solution on abhijeets@nedbank.co.za
Thanks in advance.
Abhijeet.
I am receiving the following error when attempting to create a new package in SSIS 2005. I have completeley re-installed, and even had our support folks re-image my pc, but no luck. Works fine on my laptop, and others are not having any issues.
Microsoft Visual Studio is unable to load this document:
Index (zero based) must be greater than or equal to zero and less than the size of the argument list.
Any help would be greatly appreciated. Thanks, Bryan
Hi..
I am working on sql server integration services..New to this topic...I want to transfer data from flat file to sql database by doing it programatically.Creating source,destination and transform adapters
my basic question is should the source,transform and destination adapter be bulid for each file i am trying to transfer.
What is the advantage of this doing it this way.
Would anyone let me know about this..
Thanks
Hello,
I am trying to bring the data from Oracle to SQL Server. And, I need to write this in C#. All that I have is a source table in Oracle and a source table in SQL Server. I need to have some samples.
Can you please guide in the right direction?
Your response will be helpful.
thx,
amrith
I have a really big stored proc that needs to be rolled out to various databases as part of db installs I run through SSIS.
The Stored proc is too long to run using Execute SQL Task. Is there another way that just running the create script manually.
I am new to SSIS. I have a requirement that from a flat file need to import the data into SQL Server DB(SQl Server2008r2).
1.When the file doesn't found in dir need to send a mail.
2.error reading And writing ,on which record the error occurred and capture the error details and need to send mail.
3. In success also need to send a mail.
I am looking high and low for some assistance with developing a VB .NET solution that I programmatically create a package and add tasks. I am adding a BULK INSERT task to load large FLAT TEXT files into SQL Server 2005 tables. When I execute the application I execute a package validation and it always returns FAILURE. I have been reading and searching like crazy and I have bought 2 microsoft books, TO NO AVAIL! Can anyone PLEASE help me with this. Thank you!
Cheers~
Hi,
View 6 Replies View RelatedI have been creating SSIS packages programmatically and have run into somewhat of a dead end. I have found the examples provided with the SQL 2005 install very helpful, but they only cover setting up three tasks: Sort task, OleDB Source and a Flat File Destination.
Does anyone have any examples or knows of examples of using the Merge Join task and the Conditional Split task?
I'm doing it all programmatically and so far I'm having trouble finding much in the way of documentation or examples.
Any help would be great!
Thanks,
Mark
Hi,
Can you please suggest the books which cover SSIS programming in C#?
Regards,
Gopi
I am trying to dynamically create the connection to a database within an SSIS package.
the requirement is to allow the user to pass through the database as a variable and that variable will dynamically create the connection string in the connection manager.
Is this possible, if so how?
Hi
I need help for Connection string:
Requirement: When we create SSIS Pacakge using Businessinteligence studio.Each Source and Destination or whatever we using the Control required DB Connection.
we connect theDB server and Database Table through manaully .Instead of Manual i need dynamic Global varible for Connection String .How to achieve this connection string.
because suppose we create SSIS Package in Developement Server Latter We change the Server from Developement to Another Testing Server . at that time we dont requierd for changing manulay.any one pls reply me.
Same as in Dotnet we give configiration XML file .we gave the Connection strng. how to in SSIS we do?
Thanks & Regards
M.Jeyakumar
CREATE TABLE Test
(
EDate Datetime,
Code varchar(255),
Cdate int,
Price int
);
drop table Test
[Code] ....
I have this Query and the below output:
EDate Code CDate Price
2015-06-24 RX 20150701 22
2015-06-24 RX 20150701 28
2015-06-24 RX 20150701 43
[Code] ....
Now the task is to create SSIS package which will create different .txt file for each Code
1) RX20150624.txt
2015-06-24 00:00:00.000 RX 20150701 22
2015-06-24 00:00:00.000 RX 20150701 28
2015-06-24 00:00:00.000 RX 20150701 43
2) NG20150623.txt
2015-06-23 00:00:00.000 NG 20150701 43
3) HO20150624.txt
2015-06-24 00:00:00.000 HO 20150701 43
And so on..
But the requirement is to have a dynamic query where we can have more number of Codes or less number of codes and similarly the package should generate dynamic text files, one .txt file per code. What is the best way to create a package which can meet the above requirement?
We are in the process of trying to automate our production releases (what a concept ;-)
The database is SQL server 2005
All objects are being stored in VSS
Using Nant and Cruise Control for the actual migrations.
I have two directories - Create (for a brandnew database) and Change (db object changes)
In my 'Change' script, I do the following -
1 - Take backup of database
2 - Migrate objects from 'change' directory to production
3 - Script out all objects of database and save in the 'Create' directory
For the #3, I was hoping I could create an SSIS package that would
script out all database objects and save them on the VSS server.
I'm new to SSIS and want to verify it's something that can be done before I start down that path.
If anyone has any examples or references, it would be much appreciated.
Thanks
Hello. I am attempting to use SSIS to import a table from MS Access in to SQL Server. However, when i set the destination component properties I get the following error:
Exception from HRESULT: 0xC0204006
The table exists within the destination database and if I comment the line out, it is able to acquire the connection.Anyone have any ideas?
Thanks
ConnectionManager connMgr;
ConnectionManager connMgr1;
//Create the package
Microsoft.SqlServer.Dts.Runtime.Package package = new Microsoft.SqlServer.Dts.Runtime.Package();
//Create to connections to the package
Connections packageConns = package.Connections;
connMgr1 = package.Connections.Add("OLEDB");
connMgr1.ConnectionString = accessModelConnectString;
connMgr1.Name = "OLEDB ConnectionManager";
connMgr = package.Connections.Add("OLEDB");
connMgr.ConnectionString = sqlConnectionString;
connMgr.Name = "OLEDB ConnectionManager1";
//Add a dataflow task to the package.
MainPipe dataFlowTask = ((Microsoft.SqlServer.Dts.Runtime.TaskHost)package.Executables.Add("DTS.Pipeline")).InnerObject as MainPipe;
IDTSComponentMetaData90 sourceComponent = dataFlowTask.ComponentMetaDataCollection.New();
sourceComponent.ComponentClassID = "DTSAdapter.OleDbSource.1";
sourceComponent.Name = "yyy";
// Get the design time instance of the component.
CManagedComponentWrapper instance = sourceComponent.Instantiate();
// Initialize the component
instance.ProvideComponentProperties();
// Specify the connection manager.
if (sourceComponent.RuntimeConnectionCollection.Count > 0)
{
sourceComponent.RuntimeConnectionCollection[0].ConnectionManager = DtsConvert.ToConnectionManager90(package.Connections[0]);
sourceComponent.RuntimeConnectionCollection[0].ConnectionManagerID = package.Connections[0].ID;
}
// Set the custom properties.
instance.SetComponentProperty("AccessMode", 2);
instance.SetComponentProperty("SqlCommand", "SELECT Test FROM Test");
// Reinitialize the metadata.
instance.AcquireConnections(null);
instance.ReinitializeMetaData();
instance.ReleaseConnections();
IDTSComponentMetaData90 destinationComponent = dataFlowTask.ComponentMetaDataCollection.New();
destinationComponent.ComponentClassID = "DTSAdapter.OleDBDestination.1";
destinationComponent.Name = "xxx";
// Get the design time instance of the component.
CManagedComponentWrapper instance1 = destinationComponent.Instantiate();
// Initialize the component
instance1.ProvideComponentProperties();
// Specify the connection manager.
if (destinationComponent.RuntimeConnectionCollection.Count > 0)
{
destinationComponent.RuntimeConnectionCollection[0].ConnectionManager = DtsConvert.ToConnectionManager90(package.Connections[1]);
destinationComponent.RuntimeConnectionCollection[0].ConnectionManagerID = package.Connections[1].ID;
}
instance1.SetComponentProperty("AccessMode", 3);
instance1.SetComponentProperty("OpenRowSet", "[PedestrianFlow].[dbo].[OLE DB Destination]");
// Reinitialize the metadata.
instance1.AcquireConnections(null);
instance1.ReinitializeMetaData();
instance1.ReleaseConnections();
// Create the path.
IDTSPath90 path = dataFlowTask.PathCollection.New();
path.AttachPathAndPropagateNotifications(sourceComponent.OutputCollection[0],destinationComponent.InputCollection[0]);
IDTSInput90 input = destinationComponent.InputCollection[0];
IDTSVirtualInput90 vInput = input.GetVirtualInput();
// Iterate through the virtual column collection.
foreach (IDTSVirtualInputColumn90 vColumn in vInput.VirtualInputColumnCollection)
{
string y = vColumn.Name;
// Call the SetUsageType method of the design time instance of the component.
instance1.SetUsageType(input.ID, vInput, vColumn.LineageID, DTSUsageType.UT_READONLY);
}
Microsoft.SqlServer.Dts.Runtime.DTSExecResult result = package.Execute();
foreach (DtsError pkgerror in package.Errors)
{
string err = pkgerror.Description;
Console.WriteLine(err);
}
I have a SQL2000 DTS package that executes vbscript to loop through a recordset which:
- runs a stored procedure and populated tables
- builds a recordset from the populated tables to write records to an Excel file
- writes status to text files with either the error or success notices
I use FSO to set up the success and error files, but the scheduled job in SQL2005 which calls the SSIS package returns the following error:
"Retrieving the file name for a component failed with error code 0x0015F74C"
I can successullly run this (vbscript) in both the SSIS package via the BI Development Studio and in MS Access (exactly the same code in both) - but not as a SSIS package called in a scheduled job in SQL2005.
I am at an impasse with this ... any and ALL assistance would be GREATLY appreciated.
TIA,
Bob
I can set the propperty of the checkpoint file to a local drive, but not to a UNC path mapping, mapping to my host server. (loop back)
Example: "I:FILEFILE1$InputArchiveOntwikkel " is possible as checkpoint file property.
S11487O$InputArchiveOntwikkel is not possible, though this is the same folder on the local host.
For data source both unc path and drive mapping are allowed. Why this difference?
Hello everyone,
I'm not at all comfortable with SSIS so please forgive me if I overload you all with information here:
I need to create a data table using SSIS which does not delete the previous days data. So far all the data tables we use to write reports in Visual Studio are constructed in SSIS as follows.
1 - Excecute SQL Task - DELETE FROM STOCK
2 - Data Flow Task
3 - Data Reader Source - SELECT * FROM ODBCDATASOURCE
4 - OLE DB Destination (Creates table STOCK)
The data tables which are created this way are stored in a data warehouse and scheduled to refresh once a day, which means that any data from yesterday is lost when the updates run. So, I tried to create a table which never has its previous days' data deleted by using just the last three steps above - and it worked great in Visual Studio, no problem at all. However, when I added this SSIS Package to the Update Job in SQL Server Management Studio, the job totally rejected the packed with the message: "The command line parameters are invalid. The step failed".
I thought I could work around this problem by asking the job step to excecute a simple SQL query to insert the data from table1 into table2 (and would thus negate the need for a SSIS Packege at all), but it threw me a curve ball with some message about not being able to use proxy accounts to run T-SQL Scripts.
If anyone knows how to create a SSIS package in which the data never expires please could you impart some wisdom my way. I only need to do this once for a specific report.
Please, when answering, bear in mind that I'm a simple fellow with little understanding of the inner workings of SQL Server and its various components, so please use short sentences and simple words.
Thanks in advance,
Chris
I've got some machines that output text files after each shot of parts. I'd like to take the data in those files and parse it and insert it into a SQL Server database for future massaging. The text files look like the example I've posted below. Can SSIS parse out the set points and actual values even though the file isn't CSV or tab delimited and the data is kind of 'strewn' all over the report? Each report does have the exact same format so the report format doesn't change from report to report, just the data. Thanks in advance.
Ernie
WP4.57 C Y C L E P R O T O C O L
Order data 18.05.06 11:27:57
Order number : 2006 Recipe no. : 15761
Machine number : 7 Recipe name : Stabilizer Bar Innsulator
Machine Operator: 1257 Art.descrip.: Stabilizer Bar Grommet
Shot Volume : 285.8
Part quantity : 100096 Type of mat.: M370-34
Shot quantity : 782 Batch number: 20124-125
-------------------------------------------------------------------------------
Temperatures in øC
Set Act Set Act
Fixed heat.platen right 182 182 Tempering screw 83 83
middle 180 180 Tempering inject.cylinder 85 85
left 182 182 Tempering circuit 3 90 91
Tempering circuit 4 0 39
Movab.heat.platen right 182 182 Tempering circuit 5 0 39
middle 180 180
left 182 182 Mould temperature 1 0 39
Mould temperature 2 0 39
Third heat.platen right 0 39 Mould temperature 3 0 39
middle 0 39 Mould temperature 4 0 39
left 0 39 Mould temperature 5 0 39
Mould heating circuit 6 0 39 Compound temp.after screw 104 104
Mould heating circuit 7 0 39 Compound temp.after nozzle 0 39
Mould heating circuit 8 0 39
Mould heating circuit 9 0 39
Mould heating circuit 10 0 39
---------------------------------------------------------------------------
Times in sec
Injection time 51.20 Transfer time 1 2.00
Internal mould press.time 0.00 Transfer time 2 2.00
Dwell pressure time 7.00 Transfer time 3 2.00
Controlled cure time 180.00 Transfer time 4 2.00
Calculated cure time 0.00 Transfer time 5 2.00
last cycle time 276
last opening time 25
---------------------------------------------------------------------------
Measure when injecting Measure at injection end
max. injection speed mm/s 11.9 Injection length mm 2.0
Injection energy kNm 247.2 Injection time sec 51.20
max. int.mould pres. bar 2 Hydraulic pressure bar 190
max. dwell pressure bar 192 Internal mould pressure bar 0
Pad mm 0.4
---------------------------------------------------------------------------
Stock Temperatures and Pressures During Metering
Stock Temperatures(C) Set Actual Metering Pressures(bar) Set Actual
Temperature 1st Step 105 106 Pressure 1st Step 135 131
Temperature 2nd Step 105 106 Pressure 2nd Step 135 129
Temperature 3rd Step 105 105 Pressure 3rd Step 135 122
Temperature 4th Step 105 106 Pressure 4th Step 135 135
Temperature 5th Step 105 109 Pressure 5th Step 135 137
Protocol Complete
Hello all
I have a ssis component that begins like below. I recently added a new customproperty to the package and needed a way to detect when an upgrade from an old version was needed. As per microsofts directions I tried to use the currentversion property for this. This seemed to work fine until I noticed that newly added component to the dataflow keep starting at version 0 and going thru an upgrade making an duplicate of the new property. As below the new version has currentversion = 2 as a property. So why is this ignored. Or how do i make a component start out with the proper version so no upgrades happen?
Code Snippet
namespace itworkz.ssis.CustomComponents
{
[DtsPipelineComponent(
DisplayName = "ODS Tool v2",
Description = "proccess data for the operational data store",
ComponentType = ComponentType.Transform,
CurrentVersion = 2,
UITypeName = "itworkz.ssis.CustomComponents.OdsTool2UI, OdsTool2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3276bb0510a3c305"
)]
public class OdsTool2 : PipelineComponent
{
Hope someone can explain this