Integration Services :: How To Execute Custom Class Library Code Through SSIS
Jun 11, 2015
I have a requirement in which i have to create a custom .net class library for Ex:-I retrieve password(s) from a thrid party component. Below is what i am doing.
(1) Created a custom class library which reads a custom .xml file from a drive Ex:- "D:MyAppMYAppCofig.xml" and sets to my properties of my custom class library and inside it i created an instance of third party component's class and passed these values. Since i need to use this .net custom class library both in web and ssis/database side i am using this custom .xml file.
(2) After validating passed data (properties set in custom .net class library) the thrid party component instance object created in my custom .net class libraty returs a password to me own custom .net class libray.
(3) This password I use in my web app for connecting to database. This code is working fine.
(4) My question is how to execute a custom .net class library code through ssis and to use the my same custom .net class library and pass the password to my SSIS component / taks so that that code block also uses the returned password to connect and do any needed tasks? In other words how to use custom .net class library from SSIS.
My Environment is as follows:-
SQL Server is : 2008 R2
VS.NET 2013
------------------------------------------------------------- Here's what our Immediate window Debugger is tellin' us about our configuration settings:
Now notice the stuff in bold...I have NO IDEA where this gosh-danged thing is reading, but it doesn't seem like it's the app.config file in our class library...
I am using SSIS 2008 R2 & SQL Server 2008 R2. When I run the package in bids it runs fine but when I try to execute this package from agent job I get the below error message. In the job execution options I tried using 32-bit runtime that didn't work either.
Connection String for Ole db source"Data Source=Test;Initial Catalog=DB_SSIS;Provider=SQLNCLI10.1;Integrated Security=SSPI;Application Name=SSISDataLoad;"
Error Message: Executed as user: Domainusername. Microsoft (R) SQL Server Execute Package Utility Version 10.50.4033.0 for 32-bit Copyright (C) Microsoft Corporation 2010. All rights reserved.  Â
Error:     Code: 0xC0209302    Source: SSISDataLoad Connection manager "DB_SSIS"    Description: SSIS Error Code DTS_E_OLEDB_NOPROVIDER_ERROR. The requested OLE DB provider SQLNCLI.1 is not registered. Error code: 0x00000000. An OLE DB record is available. Source: "Microsoft OLE DB Service Components" Hresult: 0x80040154 Description: "Class not registered". Code: 0xC020F42A . Source: SSISDataLoad Connection manager "DB_SSIS"    Description: Consider changing the PROVIDER in the connection string to SQLNCLI10 or visit
I´m wondering if is it possible to use the SSIS Class Library without SQLServer installed in the machine or if is it necessary to install SLQ Server in order to use SSIS objects?
I'm writing my first SSIS custom task. I have added Public properties, which appear in the standard task properties window, and to one of them I have added an EditorAttribute as follows:
   <Category("General"), _    Browsable(True), _    EditorAttribute(GetType(UIFileNameEditor), _    GetType(System.Drawing.Design.UITypeEditor))> _    Public Property FilesToArchive() As String
[Code] ....
When I select the FilesToArchive property in the Properties window, I get an ellipsis that appears in the property value. When I click on the ellipsis, it brings up the FolderBrowserDialog, which is defined in the UIFileNameEditor class. This all works fine.
What I want to do is to bring up the EditorUI, the one you get when you double click on the task, and also populate that with properties which can be edited. I have a class which inherits DTSBaseTaskUI, which is displayed when I double click on the task.
I can also get properties to be displayed in that UI but I cannot get them to be editable in that UI, using the same technique as in the standard Properties window, as described above.
I am writing my first custom SSIS task and I can see that, if I put a public property into the task, I see that property in the standard Properties window. If I add a property of type String, I can put a value in that property, in the task code, and when I instantiate the task in a package, I can see the value I entered.
To try and get a drop down list property in the Properties window, I declared a property of type Combobox, and indeed a drop down list appears in that property.
My problem is trying to get values in that property. I have used the test items:
   Property.Items.add("Fred")    Property.Items.Add("Jim")
But I do not see the values in the drop down list. All I do see is one item with a value of "(none)".
Before we release an SSIS package into our test environment and then eventually into our production environment, we  set the package protection level to "EncryptAllWithPassword"
The "View Code" feature is a nice tool to find things that might be buried in the package somewhere (e.g an complex expression to a variable).
PROBLEM : After one sets the package protection level to "EncryptAllWithPassword", one cannot see the xml source code any longer. It's like compiling and saving cs to the bin. Is their a way to view the code again??
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?
How to execute ssis package from command prompt and also pass configuration file to it and set logging to ssis log provider for sql server. Writing all those options with cmd.
I have tried to incorporate 638 lines sql code inside the Execute SQL Task editor. But it is truncating the codes inside the Execute SQL Task (SQL command) in SSIS.write all 639 lines of codes in the Execute SQL Task Editor in SSIS.
SSIS package working fine directly.I got following error while execute SSIS package from C# console application.
The connection "{79D920D4-9229-46CA-9018-235B711F04D9}" is not found. This error is thrown by Connections collection when the specific connection element is not found. Cannot find the connection manager with ID "{79D920D4-9229-46CA-9018-235B711F04D9}" in the connection manager collection due to error code 0xC0010009. That connection manager is needed by "OLE DB Destination.Connections[OleDbConnection]" in the connection manager collection of "OLE DB Destination". Verify that a connection manager in the connection manager collection, Connections, has been created with that ID. OLE DB Destination failed validation and returned error code 0xC004800B. One or more component failed validation. There were errors during task validation.
Code :Â
  public static string RunDTSPackage()     {       Package pkg;       Application app;       DTSExecResult pkgResults;       Variables vars;       app = new Application();       pkg = app.LoadPackage(@"D:WORKPackage.dtsx", null);    Microsoft.SqlServer.Dts.Runtime.DTSExecResult results = pkg.Execute(); }
I have recreate the application with again new connection in SSIS. Still not working.
I have created for each container to call all the packages in a folder like below, also created a variable.
Then I add execute package task inside of foreach container and selected file system in a location and in connection called currently creating package name finally in connection properties i added variable in expression which i created and mapped into for each loop container. I referred below linkÂ
[URL] ....
All the packages are running but its not ending once all the packages executed its re run and continue the running process, how to stop once all the packages execute.Â
I have an execute process task set up to run ftp.exe and a script argument. Â The ftp.exe is referenced in the executable field without a qualified path. Â The package just seems to know it's there relatively. Â I need to change this to run a secured ftp executable that I recently installed on my pc. Â I put the new executable in the WindowsSystem32 folder where the old ftp.exe is stored. Â But when I put the new executable in the executable field, it says the 'File/Process "FTPS.exe" is not in path'. Â I get the same error when I fully qualify the path. Â Is there something I need to do with the new executable for SSIS to pick it up without having to fully qualify the path?
After adding Service Reference  to WebService, the Script Component has Binary Code not found, red circle not showing these are the steps I followed:
1) Add Script Component as Source 2) Add 3 x Output Columns Col1,2 and 3 3) Add HTTP Connection URL>..Binary Code not found, red circle showing 4) Add test code to Sub CreateNewOutputRows    Dim i As Integer = 6      Binary Code not found, red circle not showing 5) Add Service Reference URL...Binary Code not found, red circle showing again
Should just adding Service Reference cause Binary Code not found, red circle to appear. I have to set precompilescripttobinary option , however cannot see this option in 2012
I have a SSRS report that uses a custom library. The custom library returns a string values, and I have tested this with a windows application.In the SSRS report. I have set the expression value for a text box as  =CodeReportingLibrary.CodeReportingFunctions.GetImage(1232)
However, when i preview the report the text box value shows as #ERROR. I checked the error list and I get a warning message : Warning 1 [rsRuntime ErrorIn Expression] The Value expression for the textrun ‘Textbox5.Paragraphs[0].TextRuns[0]’ contains an error: Attempt by security transparent method 'CodeReportingLibrary.CodeReportingFunctions.GetReferenceImage(Int32)' to access security critical method 'Microsoft. TeamFoundation. Client. TfsTeamProjectCollection..ctor(System.Uri)' failed.  Assembly 'CodeReportingLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is partially trusted, which causes the CLR to make it entirely security transparent regardless of any transparency annotations in the assembly itself.  In order to access security critical code, this assembly must be fully trusted.
I have updated the rssrvpolicy.config in ReportServer folder, to include my custom dll.
I am using SSIS integration between two database. Both databases are sql server 2008. Â using many integration but getting problem in two only only two integration giving problem, both are executing perfectly and out put also not showing any error.
but destination table not inserted/updated anything.
first issue integration is using data flow task with oledb source and destination. second one is using execute task with for-eachloop container.
We are building a dataload application where parameters are store in a table. And there are multiple packages for each load.There is a column IsChecked column if it is 1 then only the child package should execute.Created a master package. In which i have taken execute SQL task in that storing a results in variable and based on the result the child package should execute. But In executesql task i selected result set as full result set. Â I am getting the below error.
[Execute SQL Task] Error: Executing the query "SELECT Â isnull(ID ,0) AS ID FROM DataLoadParameter..." failed with the following error: "The type of the value (DBNull) being assigned to variable "User::LoadValue" differs from the current variable type (Int32). Variables may not change type during execution. Variable types are strict, except for variables of type Object.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.
I am not sure if this is a correct forum to discuss on the document posted @ http://www.microsoft.com/downloads/details.aspx?familyid=1c2a7dd2-3ec3-4641-9407-a5a337bea7d3&displaylang=en on SQL Server Integration Services (SSIS) Hands on Training - Creating Custom Components.
I am assuming Microsoft Developers are constantly monitoring this forum.
In the document - SSIS Creating a Custom Transformation Component .doc on Page 2 - Exercise 1 - Writing the no-op data flow transformation component - Task 1 - Create a new C# Class Library Project
The textual description talks about creating a new Visual C# Class Library project in VS 2005 but the screenshot accompanying it shows the creation of new "Integration Service Project" in VS 2005.
Please change the screenshot appropriately to avoid confusions.
We are executing a SSIS package using a xp_cmdshell command in a SP as shown below. This package does consumes time to execute almost 90 minutes and does get executed successfully too. But the strange thing is we don't get the result in @result variable just because somehow the next sql statement after the below highlighted statement doesn't get executed at all. Â After checking execution stats for the SP using the query attached below we observed that somehow the SP vanishes out of the execution stats for the server.
 SELECT @cmd = 'dtexec /FILE "D:Program FilesMicrosoft SQL Server100DTSPackages.....PopulateReport.dtsx"'       SELECT @cmd = @cmd + ' /Decrypt T@!0er '       SELECT @cmd = @cmd + ' /set package.variables[vAppID].Value;' + CONVERT(VARCHAR(10),@appId)       SELECT @cmd = @cmd + ' /set package.variables[vDBName].Value;' + '"' + @db + '"'       SELECT @cmd = @cmd + ' /set package.variables[vBuildMFF].Value;' + CONVERT(VARCHAR(10),@BuildMFF)       [code]....
I am using SSIS 2012 to dynamically backup stored procedures on a list of Servers and Databases.Here are the steps in my package,
1. Execute SQL Task: Captures a result set (configured to save the data set in an Object variable) with all the Servers and Databases on which stored procedures exist.
2. For each loop that is configured to get each each row(server name @[User::Server_Name] and databases name @[User::DataBase_Name]) from the object variable (@[User::Connection_Strings])and pass it to a connection manager that has an expression for servername and database name.
2a) Â Within the for each loop, i have an execute process task that is configured as
 i) Executable:  C:WindowsSystem32WindowsPowerShellv1.0powershell.exe  ii) Arguments:  Configured this to fetch value from an expression. The expression i am using is,'C:batch - CopyPowerShell Scripts to Backup Stored ProceduresScriptOutSPs.ps1' -$Server_Name "+ @[User::Server_Name]+ " -$Database_Name "+ @[User::DataBase_Name]        Note:  @[User::Server_Name] is the Servername from object variable and so is @[User::DataBase_Name] for database name . The execute task is to run a command line that triggers a powershell script with parameters. Here is the powershell script that i am using,
When i execute the script, by passing parameters from arguments, it executes successfully but nothing happens. Passing wrong arguments in the expression?
Can anyone tell me where I might find the Class and Sequence Diagrams for the SSIS framework (for Custom Components)?
I've just started trying to create some Custom Transform Components and I'm really struggling to get my head around the component lifecycle (i.e what methods are called when, with what arguments, and why) with just the BOL documentation to guide me.
i need to execute a ssis(sql 2005 integration service) on a document document library . can you people help me out how i can do it
i want to make a work flow which initiate when new document upload in a moss document library and this work flow pass the document to a ssis package and initiate that ssis package
note: the database and moss servers are on different machine
We manage some SSIS servers, which has only SSIS and SSIS tools installed on them and not the sql server DB.
SSIS packages and configuration files are deployed on a NAS. We run the SSIS packages through DTEXEC by logging in to the server.
We want to allow developers to run their packages on their own on the server, but at the same time we dont want to give them physical access on the server i.e we do not want to add them into RDP users list on server properties. We want them to allow running their packages remotely on the server.
One way We could think of is by using powershell remoting and we are working on that. But is there any other way or any tool already present for the same.
Hi All, Now I am creating .Net CF2.0 class library project, and I have some public method which take parameters. And I commented those method using following tag.
But when I add to other project where I wanted use that dll , when I create instance and call the method it€™s not giving me the description which I gave. But when I refer in the same class library project itself it€™s giving outside that it€™s not giving the details. Could you please anyone to solve this problem ?? Thanks , Jayakumar a
I'm trying to use the Data Access Application block, and am having some issues with configuration. I am using it in a class library, and it seems that with v 3 you need to configure the DAAB first, making changes to the configuration file. However, in a class library, I do not seem to have the web.config or app.config file to change. So where do I need to store the configuration settings? Thanks, Paul
Hi There!I have a big application which has two parts. A back-end developed in Deplhi 7 for desktop and a front-end developed in ASP.net C#. The problem I am facing is to integrate the login between both applications. I have a database that has the USER table with the PASSWORD encrypted and I've been already developed a Class Library with all the needs of Cryptography that has been used by the ASP.net application to authenticate users. The thing is, the desktop application has to authenticate the users too with the very same cryptography method, but Dephi cannot use dotNet assemblies (?). The client of the application ask to not use a web service and I'm trying to do this cryptography on the data base.The question is: Is there any way to invoke a dotNet Class Library through a SQL Server 2000 Stored Procedure?Consider that the Dephi developers had researched some ways to use dotNet assembly inside their application with no success. They had tried to develop their own cryptography method based on the algorithm that I had said them, but the encrypted string is different. Whenever the application try to match the strings, it doesn't work.Do you have some idea guys?Thanks in Advance! Ramon Silva
I created a class library which uses a web reference My SSRS report uses the class through its custom code I copied the dll & dll.config of the class library to the VS2005 private assembllies and the report works I copied the dll & dd.config to the reportserver bin and gave the assembly full trust by adding the necessary code group I even added a code group the give the dll.config file full trust as well Yet on Repost server, the report does not work Any ideas I suspect it is a permission problem
I have a package that loads data from a flat file, performs some transformations and then inserts the final data into a DB destination. The keys for the different DB records are generated in Script components in the Data Flow Tasks.
My question is concerning the Key Generation and I'll try to explain it on a simple example.
Package Structure:
The Control Flow contains two Data Flow tasks. Each of the Data Flow Tasks contains a Script Component responsible for generating the keys of the records to be loaded during this data flow.
The code of the Script component is the following:
' Field Definitions ' Private seed1 As Integer Private seed2 As Integer
' Constructor ' Public Sub New(ByVal dbSeed1 As Integer, ByVal dbSeed2 As Integer) ..... End Sub
' Generates the keys according to the seeds retrieved from the DB ' Public Function getNextKey() As Int64 ... ... Return generatedKey End Function
End Class
Public Class ScriptMain Inherits UserComponent
Private generator As New KeyGenerator(7, 5)
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
.... Row.NewKey = generator.getNextKey()
End Sub End Class
Questions: As you can see the KeyGenerator class code gets duplicated in each Script Component, which is definitely a bad practise. What I wish to do is to create the KeyGenerator class and deploy it as a library "somewhere". Then, in each Script Component, I should only import the KeyGenerator class.
1. Is that possible?
2. If yes, how can I do this?
3. If not, what is a best practise you would recommend which allows me to avoid this code duplication of the KeyGenerator class?