Sp_executesql Error From SSIS OLE DB Command
Jul 20, 2006
Hi
I've got an SSIS package, I'm in a Data Flow step that has a OLE DB Command Data Flow Transformation.
The SQLCommand in the OLD DB Command is:
______________________
UPDATE Employment_Episode_Dim
SET Commence_Serv_Date = ?
WHERE AGS_Number = ?
______________________
The package will run through successfully, but I don't see any updates
in Employment_Episode_Dim. I ran a trace, and this is a sample of the
SQL that is being executed:
______________________
exec sp_executesql N'UPDATE EMPLOYMENT_EPISODE_DIM
SET COMMENCE_SERV_DATE = @P1
WHERE (AGS_NUMBER = @P2)',N'@P1 datetime,@P2 int',''2005-01-27
00:00:00:000'',78577229
______________________
If I take that SQL and execute it in a query window, it fails due to
two single quotation marks placed around the date parameter being used
as @P1.
Why does SQL/SSIS put two singles around the date? It's outside of the
string to be executed, so it doesn't seem to need to have the double.
Can anyone please help?
Thanks
Earth
View 2 Replies
ADVERTISEMENT
Nov 4, 2006
Hi All,
i am using a OLE DB Source in my dataflow component and want to select rows from the source based on the Name I enter during execution time. I have created two variables,
enterName - String packageLevel (will store the name I enter)
myVar - String packageLevel. (to store the query)
I am assigning this query to the myVar variable, "Select * from db.Users where (UsrName = " + @[User::enterName] + " )"
Now in the OLE Db source, I have selected as Sql Command from Variable, and I am getting the variable, enterName,. I select that and when I click on OK am getting this error.
Error at Data Flow Task [OLE DB Source [1]]: An OLE DB error has occurred. Error code: 0x80040E0C.
An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80040E0C Description: "Command text was not set for the command object.".
Can Someone guide me whr am going wrong?
myVar variable, i have set the ExecuteAsExpression Property to true too.
Please let me know where am going wrong?
Thanks in advance.
View 12 Replies
View Related
Dec 12, 2004
If i am using SqlCommand Class and the CommandType of it is Text, then will it add "sp_executesql N" in front of the sql command automatically in fact, just like SqlDataAdapter?
View 3 Replies
View Related
Sep 21, 2006
I have written a stored procedure that accepts 33 parameters. I am trying to execute the stored procedure from a SSIS OLE DB Command task. The code I am putting into the "SqlCommand" property is "Exec dbo.CO_PROD_UPDATE ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
View 6 Replies
View Related
Jun 15, 2006
Hi,
when we are using OLEDB Command we are getting the following error?
when we use sql server as the source its working fine .but its throwing error when we try to connect the orcale database .
Error at Data FLOW TASk[OLE DB Command[3863]]: An OLE DB error has occured :0x80040E51.
An OLE DB record is available. Source : "Microsoft OLE DB Provider for Oracle" Hresult: 0x80040E51
Description: "Provider cannot derive parameter information and SetParameterInfo has not been called.".
ERrror at Data Flow Task [OLE DB Command [3863]]: Unable to retrieve destination column description from the Parameter of the SQL Command
Thanks & Regards
Jegan.T
View 4 Replies
View Related
Mar 24, 2008
I have a pretty simple senario.
In a data flow task, I have a OLE DB Source, which is a simple select statement. That is then connected to a OLE DB Command object, which executes a stored procedure on a different server, with the columns of the source as parameters to the stored procedure. I then have that connected to another OLE DB Command object, that will update the row in the source, marking it processed if there wasn't an error (no errors raised) in the stored procedure.
This seems to work just fine. Rows that had errors will error out, but I have the max allowed errors set very high to prevent the task from stopping. The problem that I have noticed is that if the very last row of the original source has an error, the component will fail with a fatal error and not go back and mark the rows that did succed as processed.
The fatal error looks like this:
Error: 0xC0047022 at OrderItems, DTS.Pipeline: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "Insert OrderItem" (97) failed with error code 0xC0202009. The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure.
At this point I really believe this is a bug in SSIS, because if the last row succeeds, reguardless of how many rows failed in the middle, the last step runs, and updates the source as processed for the rows that did not fail. But if the last row fails, it doesn't execute the next step.
Has anyone experienced this before. I really hope there is a minor configuration change that can be made so I do not have to redesign the package. My only alternative at this point is to redesign the stored procedure to not raise an error, and return any errors in an output parameter, and then use a conditional split to determine what rows to go back and update at the source, and then rather than relying on the package output to see the errors, I'll have to write the errors to a table somewhere.
- Eric
View 1 Replies
View Related
May 25, 2007
hi,
I am having trouble executing a DB2 stored procedure using OLE DB command task.
The stored procedure takes 2 paramters.
1. filename 2. logfilename
filename - servernamefoldername extfilename
logfilename - servernamefoldernamelogfilename
Both are user defined variables with data type string. i created 2 dervied columns FILE and LOG to pass these values.
FILE takes the filename value
LOG takes the logfilename value
When I execute it gives me the following errors.
[OLE DB Command 1 [77]] Error: An OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is available. Source: "IBM OLE DB Provider for DB2" Hresult: 0x80004005 Description: "[DB2/NT] SQL0811N The result of a scalar fullselect, SELECT INTO statement, or VALUES INTO statement is more than one row. SQLSTATE=21000 ".
[DTS.Pipeline] Error: The ProcessInput method on component "OLE DB Command 1" (77) failed with error code 0xC0202009. The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running.
[DTS.Pipeline] Error: Thread "WorkThread0" has exited with error code 0xC0202009.
Can anyone please help me resolve this issue.
I can execute the SP using execute sql task but the problem is I need to pass the rejected rows to a reject table for logging purposes. thts why am tryin the OLE DB command.
Thank You
View 7 Replies
View Related
Sep 13, 2007
Hi All,
In one of my SSIS package (which connect to DB2) i save the DB2 username and password in SSIS packge itself by using option "EncryptAllWithPassword".
When I try to run the packge using dtexecui.exe it works perfectly fine. It prompts me for package password and then run fine.
Now I am trying to run it using command line dtxece.exe and i get fooolwoing error. Please suggest and help!!!
DTExec.exe /FILE C:pkgDB2Load.dtsx /CONFIGFILE C:ConfigpkgConfigMaster.dtsConfig /Decrypt mypassword /CHECKPOINTING OFF /REPORTING EWCDI
Error Message:
----------------------
Description: An OLE DB error has occurred. Error code: 0x80040E21.
An OLE DB record is available. Source: "IBM OLE DB Provider for DB2 Servers" Hresult: 0x80040E21 Description: " SQL30082N Attempt to establish connection fa
iled with security reason "17" ("UNSUPPORTED FUNCTION"). SQLSTATE=08001
"
Thanks
Sid
View 1 Replies
View Related
Aug 17, 2006
I have an SSIS package that runs fine through command pormpt although when I try to run it from a SQL Servr Agent Job CmdExec step it bombs out. Please help this has me stumped...the SSIS package uses an XML connection string so certain key settings such as connection strings and email info can be changed easily. Currently this is all on the same machine. I have not moved it beyond where I am developing.
On the command line I am using the following command...
dtexec /F "S:connectionscontacts.dtsConfig" /DE "password"
Below is the output log...
Microsoft (R) SQL Server Execute Package Utility
Version 9.00.1399.06 for 32-bit
Copyright (C) Microsoft Corp 1984-2005. All rights reserved.
Started: 6:59:40 PM
Progress: 2006-08-16 18:59:41.29
Source: Data Flow Task
Validating: 0% complete
End Progress
Progress: 2006-08-16 18:59:41.29
Source: Data Flow Task
Validating: 33% complete
End Progress
Progress: 2006-08-16 18:59:41.71
Source: Data Flow Task
Validating: 66% complete
End Progress
Progress: 2006-08-16 18:59:41.73
Source: Data Flow Task
Validating: 100% complete
End Progress
Progress: 2006-08-16 18:59:41.77
Source: Data Flow Task
Validating: 0% complete
End Progress
Progress: 2006-08-16 18:59:41.77
Source: Data Flow Task
Validating: 33% complete
End Progress
Progress: 2006-08-16 18:59:41.77
Source: Data Flow Task
Validating: 66% complete
End Progress
Progress: 2006-08-16 18:59:41.77
Source: Data Flow Task
Validating: 100% complete
End Progress
Progress: 2006-08-16 18:59:41.79
Source: Data Flow Task
Prepare for Execute: 0% complete
End Progress
Progress: 2006-08-16 18:59:41.79
Source: Data Flow Task
Prepare for Execute: 33% complete
End Progress
Progress: 2006-08-16 18:59:41.79
Source: Data Flow Task
Prepare for Execute: 66% complete
End Progress
Progress: 2006-08-16 18:59:41.79
Source: Data Flow Task
Prepare for Execute: 100% complete
End Progress
Progress: 2006-08-16 18:59:41.81
Source: Data Flow Task
Pre-Execute: 0% complete
End Progress
Progress: 2006-08-16 18:59:41.84
Source: Data Flow Task
Pre-Execute: 33% complete
End Progress
Progress: 2006-08-16 18:59:41.90
Source: Data Flow Task
Pre-Execute: 66% complete
End Progress
Progress: 2006-08-16 18:59:41.90
Source: Data Flow Task
Pre-Execute: 100% complete
End Progress
Progress: 2006-08-16 18:59:41.92
Source: Data Flow Task
Post Execute: 0% complete
End Progress
Progress: 2006-08-16 18:59:41.92
Source: Data Flow Task
Post Execute: 33% complete
End Progress
Progress: 2006-08-16 18:59:41.92
Source: Data Flow Task
Post Execute: 66% complete
End Progress
Progress: 2006-08-16 18:59:41.92
Source: Data Flow Task
Post Execute: 100% complete
End Progress
Progress: 2006-08-16 18:59:41.92
Source: Data Flow Task
Cleanup: 0% complete
End Progress
Progress: 2006-08-16 18:59:41.93
Source: Data Flow Task
Cleanup: 33% complete
End Progress
Progress: 2006-08-16 18:59:41.93
Source: Data Flow Task
Cleanup: 66% complete
End Progress
Progress: 2006-08-16 18:59:41.93
Source: Data Flow Task
Cleanup: 100% complete
End Progress
Progress: 2006-08-16 18:59:41.95
Source: Send Mail Task
The SendMail task is initiated.: 0% complete
End Progress
Progress: 2006-08-16 18:59:42.09
Source: Send Mail Task
The SendMail task is completed.: 100% complete
End Progress
DTExec: The package execution returned DTSER_SUCCESS (0).
Started: 6:59:40 PM
Finished: 6:59:42 PM
Elapsed: 1.984 seconds
When I try to use the same command within SQL Server Agent Job using a CmdExec step I get the following error...
Description: The package is attempting to configure from the XML file "S:connectionscontacts.dtsConfig". End Info Warning: 2006-08-16 18:40:03.15 Code: 0x80012012 Source: contactsPackage Description: The configuration file name "S:connectionscontacts.dtsConfig" is not valid. Check the configuration file name. End Warning Warning: 2006-08-16 18:40:03.15 Code: 0x80012059 Source: contactsPackage Description: Failed to load at least one of the configuration entries for the package. Check configurations entries and previous warnings to see descriptions of which configuration failed. End Warning Info: 2006-08-16 18:40:03.20 ... Process Exit Code 1. The step failed.
Thanks in advance for any help!!!
View 2 Replies
View Related
Oct 30, 2000
I am using dynamica SQL in one of my stored procs That performs BULKINSERT
on few tables.
If there is a PK constraint violation, I wanted to write an error routine.
But once SP_EXECUTESQL gives an error, the stored proc just abends
not allowing me to ado anything else.
Can anyone help me with some information on how to perform error
handling when I am using Dynamic SQL?
I am also sending the the piece of code and the error message.
CODE: Assume that all variables are declared appropriately.
SET @string = 'BULK INSERT Tb_Manfg ' + char(13) +
'FROM '+ '''' + @path_tb_manfg + '''' + char(13) +
'WITH (FIELDTERMINATOR = ' + '''' + '|=|'+ '''' + ',' + char(13) +
'ROWTERMINATOR = ' + '''' + '
' + '''' + ')'
IF @error = 0
BEGIN
PRINT 'NOW Tb_Manfg GOING TO BE INSERTED.......'
EXEC SP_EXECUTESQL @string
/*
This is where the stored proce abends.
The subsequent code is not executed at all.
*/
PRINT 'ERROR IS.........'
PRINT @@ERROR
IF @@ERROR = 2627
BEGIN
PRINT 'AN ERROR OCCURED WHILE INSERTING INTO Tb_Cateory'
SET @error = @@ERROR
return
END
ELSE
BEGIN
SET @error = @@ERROR
END
ERROR MESSAGE:
Server: Msg 2627, Level 14, State 1, Line 1
Violation of PRIMARY KEY constraint 'PK__TB_Manfg__1FCDBCEB'. Cannot insert duplicate key in object 'TB_Manfg'.
The statement has been terminated.
Thanks a lot.
Sush.
View 1 Replies
View Related
May 22, 2007
Hi,
I need to capture the error code while using sp_executesql
insert into #temp1
exec @status=sp_executesql @actn_id1
This @actn_id1 contains the proc name and the parameters. The problem now is when I get an error it’s not captured in the @status column, it always 0 and also tried @@error and was also 0.
Server: Msg 55118, Level 16, State 1, Procedure S_START_LUW, Line 383
info_upd_id =530129179546!, is using current subj_id.
This is a user defined error captured using raiserror inside a sub proc.
Can I capture this error number in the status column?
Thanks in advance for the help
View 5 Replies
View Related
Jul 23, 2005
Gurus,Here is what I ma trying to do. I have numeric expression stored in atable column. for e.g. @a + @b + @c. I supply values to the variablesat run time and want them to be computed at run time as per theexpression in the column.the stored procedure works fine but it gives a silly error.Any help greatly appreciated. Below is the code.--drop procedure proc_bkrcreate procedure proc_bkr ASdeclare @expr nvarchar(2000)declare @sql nvarchar(2000)declare @temp_exp nvarchar(3000)declare @ans integerdeclare @QFAAPAC02_1 integerdeclare @QFAAPAC02_2 integerdeclare @QFAAPAC02_3 integerdeclare @QFAAPAC02_4 integer-- Assigning values to variables -- Startset @QFAAPAC02_1 = (Select QFAAPAC02_1 from fa_ap_stage where recordid= 3)set @QFAAPAC02_2 = (Select QFAAPAC02_2 from fa_ap_stage where recordid= 3)set @QFAAPAC02_3 = (Select QFAAPAC02_3 from fa_ap_stage where recordid= 3)set @QFAAPAC02_4 = (Select QFAAPAC02_4 from fa_ap_stage where recordid= 3)-- Assigning values to variables -- Endset @temp_exp = (select num from translation where processid = 'AP' andlabel = 'C1')-- This is how num looks: @QFAAPAC02_1 + @QFAAPAC02_2 + @QFAAPAC02_3 +@QFAAPAC02_4--select @expr = '@QFAAPAC02_1 + @QFAAPAC02_2 + @QFAAPAC02_3 +@QFAAPAC02_4'-- Above line works fine but below one does not. though both are same.select @expr = @temp_expselect @sql = 'select @ans = ' + @exprexec sp_executesql @sql, N'@QFAAPAC02_1 integer, @QFAAPAC02_2 integer,@QFAAPAC02_3 integer, @QFAAPAC02_4 integer, @ans integer OUTPUT',@QFAAPAC02_1,@QFAAPAC02_2,@QFAAPAC02_3,@QFAAPAC02_ 4,@ans OUTPUTset @cc = @ansError Message: Server: Msg 137, Level 15, State 2, Line 1[Microsoft][ODBC SQL Server Driver][SQL Server]Must declare thevariable '@QFAAPAC02_'.Thanks in Advance!Bkr
View 1 Replies
View Related
Jun 13, 2005
Hey all,
Having some trouble with a Database email system I created. The system consists of two tables, DATA_ELEMENT and EMAIL_MESSAGE. So the email message body and recipient fields may contain substitution macros such as {![CUST_EMAIL]!}. The CUST_EMAIL data element row then stores the SELECT, FROM and WHERE clauses separately. There is a stored proc to search the message body and recipients for these substitution macros and replace them with the appropriate values from the DB.
The system is working well except I have one particular substitution macro called VENUE_NAME_BY_PPPID which is causing a problem.
Quote: Server: Msg 207, Level 16, State 3, Line 3
Invalid column name 'PARTNER_PRODUCT_PRIZE_ID'.
And here's the query which is creates this error (without the escaped single quotes):
Code:
SELECT P.PARTNER_NAME + ISNULL(' - ' + PS.SITE_NAME, '')
FROM PARTNER_PRODUCT_PRIZE PPP
JOIN PARTNER_PRIZE PP ON PP.PARTNER_PRIZE_ID = PPP.PARTNER_PRIZE_ID
JOIN PARTNER P ON P.PARTNER_ID = PP.PARTNER_ID
LEFT JOIN PARTNER_SITE PS ON PS.PARTNER_ID = PP.PARTNER_ID
AND PS.PARTNER_SITE_ID = PP.PARTNER_SITE_ID
WHERE PPP.PARTNER_PRODUCT_PRIZE_ID = '19'
And just after this print statement, the query is executed with sp_executesql()
Any advice is greatly appreciated as this query runs fine when I execute from the query window. However, if I escape all the necessary quotes, I can't get it to run when I put the string inside of sp_executesql().
--Travis
View 1 Replies
View Related
Aug 22, 2007
Example code:
declare @somesql nvarchar(20)
execute sp_executesql @somesql, N'@lnCurrRow int', @lnCurrRow = 1
PRINT @@ERROR
@@Error returns 0, which is seems incorrect since @somesql is null. If you substitute @somesql for the constant NULL then an error is fired. The above also executes successfully with @@error = 0 if you set @somesql = '' (empty string).
EXEC behaves the same way.
It makes sense that executing an empty string should be fine, but NULL? Is there a SET option available that will cause an error to be raised if sp_executesql attempts to execute a nvarchar variable that's set to NULL?
Thanks.
View 4 Replies
View Related
Jul 23, 2005
This is a odd problem where a bad plan was chosen again and again, butthen not.Using the profiler, I identified an application-issued statement thatperformed poorly. It took this form:exec sp_executesql N'SELECT col1, col2 FROM t1 WHERE (t2= @Parm1)',N'@Parm1 int', @Parm1 = 8609t2 is a foreign key column, and is indexed.I took the statement into query analyzer and executed it there. Thequery plan showed that it was doing a scan of the primary key index,which is clustered. That's a bad choice.I then fiddled with it to see what would result in a good plan.1) I changed it to hard code the query value (but with the parmdefinition still in place. )It performed well, using the correct index.Here's how it looked.exec sp_executesql N'SELECT cbord.cbo1013p_AZItemElement.AZEl_Intid AS[Oid], cbord.cbo1013p_AZItemElement.incomplete_flag AS [IsIncomplete],cbord.cbo1013p_AZItemElement.traceflag AS [IsTraceAmount],cbord.cbo1013p_AZItemElement.standardqty AS [StandardAmount],cbord.cbo1013p_AZItemElement.Uitem_intid AS [NutritionItemOid],cbord.cbo1013p_AZItemElement.AZeldef_intid AS [AnalysisElementOid] FROMcbord.cbo1013p_AZItemElement WHERE (Uitem_intid= 8609)', N'@Parm1 int',@Parm1 = 8609After doing this, re-executing the original form still gave badresults.2) I restored the use of the parm, but removed the 'exec' from thestart.It performed well.After that (surprise!) it also performed well in the original form.What's going on here?
View 3 Replies
View Related
Feb 13, 2008
Hi,
Our report is working fine with data loaded from a stored procedure (#1) that contains a fairly simple Select statement. We need the same report to work with a dataset loaded from a stored procedure (#2) that uses 'Exec sp_executesql @queryString'. Unfortunately, attempts to call the latter cause an error in the report. From everything that I've read, there should be no difference between datasets created using either method. Any ideas what could be getting in the way of the latter?
I have doublechecked that the dynamic query is returning a valid dataset and that all the columns are in the same format as sp #1. The designer shows the dataset and the report with the data loaded, but the live system produces an error.
Any help is much appreciated.
Debbie
View 4 Replies
View Related
Sep 19, 2006
Hi. I am writing a program in C# to migrate data from a Foxpro database to an SQL Server 2005 Express database. The package is being created programmatically. I am creating a separate data flow for each Foxpro table. It seems to be doing it ok but I am getting the following error message at the package validation stage:
Description: An OLE DB Error has occured. Error code: 0x80040E0C.
An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80040E0C Description: "Command text was not set for the command object".
.........
Description: "component "OLE DB Destination" (22)" failed validation and returned validation status "VS_ISBROKEN".
This is the first time I am writing such code and I there must be something I am not doing correct but can't seem to figure it out. Any help will be highly appreciated. My code is as below:
private bool BuildPackage()
{
// Create the package object
oPackage = new Package();
// Create connections for the Foxpro and SQL Server data
Connections oPkgConns = oPackage.Connections;
// Foxpro Connection
ConnectionManager oFoxConn = oPkgConns.Add("OLEDB");
oFoxConn.ConnectionString = sSourceConnString; // Created elsewhere
oFoxConn.Name = "SourceConnectionOLEDB";
oFoxConn.Description = "OLEDB Connection For Foxpro Database";
// SQL Server Connection
ConnectionManager oSQLConn = oPkgConns.Add("OLEDB");
oSQLConn.ConnectionString = sTargetConnString; // Created elsewhere
oSQLConn.Name = "DestinationConnectionOLEDB";
oSQLConn.Description = "OLEDB Connection For SQL Server Database";
// Add Prepare SQL Task
Executable exSQLTask = oPackage.Executables.Add("STOCK:SQLTask");
TaskHost thSQLTask = exSQLTask as TaskHost;
thSQLTask.Properties["Connection"].SetValue(thSQLTask, "oSQLConn");
thSQLTask.Properties["DelayValidation"].SetValue(thSQLTask, true);
thSQLTask.Properties["ResultSetType"].SetValue(thSQLTask, ResultSetType.ResultSetType_None);
thSQLTask.Properties["SqlStatementSource"].SetValue(thSQLTask, @"C:LPFMigrateLPF_Script.sql");
thSQLTask.Properties["SqlStatementSourceType"].SetValue(thSQLTask, SqlStatementSourceType.FileConnection);
thSQLTask.FailPackageOnFailure = true;
// Add Data Flow Tasks. Create a separate task for each table.
// Get a list of tables from the source folder
arFiles = Directory.GetFileSystemEntries(sLPFDataFolder, "*.DBF");
for (iCount = 0; iCount <= arFiles.GetUpperBound(0); iCount++)
{
// Get the name of the file from the array
sDataFile = Path.GetFileName(arFiles[iCount].ToString());
sDataFile = sDataFile.Substring(0, sDataFile.Length - 4);
oDataFlow = ((TaskHost)oPackage.Executables.Add("DTS.Pipeline.1")).InnerObject as MainPipe;
oDataFlow.AutoGenerateIDForNewObjects = true;
// Create the source component
IDTSComponentMetaData90 oSource = oDataFlow.ComponentMetaDataCollection.New();
oSource.Name = (sDataFile + "Src");
oSource.ComponentClassID = "DTSAdapter.OLEDBSource.1";
// Get the design time instance of the component and initialize the component
CManagedComponentWrapper srcDesignTime = oSource.Instantiate();
srcDesignTime.ProvideComponentProperties();
// Add the connection manager
if (oSource.RuntimeConnectionCollection.Count > 0)
{
oSource.RuntimeConnectionCollection[0].ConnectionManagerID = oFoxConn.ID;
oSource.RuntimeConnectionCollection[0].ConnectionManager = DtsConvert.ToConnectionManager90(oFoxConn);
}
// Set Custom Properties
srcDesignTime.SetComponentProperty("AccessMode", 0);
srcDesignTime.SetComponentProperty("AlwaysUseDefaultCodePage", true);
srcDesignTime.SetComponentProperty("OpenRowset", sDataFile);
// Re-initialize metadata
srcDesignTime.AcquireConnections(null);
srcDesignTime.ReinitializeMetaData();
srcDesignTime.ReleaseConnections();
// Create Destination component
IDTSComponentMetaData90 oDestination = oDataFlow.ComponentMetaDataCollection.New();
oDestination.Name = (sDataFile + "Dest");
oDestination.ComponentClassID = "DTSAdapter.OLEDBDestination.1";
// Get the design time instance of the component and initialize the component
CManagedComponentWrapper destDesignTime = oDestination.Instantiate();
destDesignTime.ProvideComponentProperties();
// Add the connection manager
if (oDestination.RuntimeConnectionCollection.Count > 0)
{
oDestination.RuntimeConnectionCollection[0].ConnectionManagerID = oSQLConn.ID;
oDestination.RuntimeConnectionCollection[0].ConnectionManager = DtsConvert.ToConnectionManager90(oSQLConn);
}
// Set custom properties
destDesignTime.SetComponentProperty("AccessMode", 2);
destDesignTime.SetComponentProperty("AlwaysUseDefaultCodePage", false);
destDesignTime.SetComponentProperty("OpenRowset", "[dbo].[" + sDataFile + "]");
// Create the path to link the source and destination components of the dataflow
IDTSPath90 dfPath = oDataFlow.PathCollection.New();
dfPath.AttachPathAndPropagateNotifications(oSource.OutputCollection[0], oDestination.InputCollection[0]);
// Iterate through the inputs of the component.
foreach (IDTSInput90 input in oDestination.InputCollection)
{
// Get the virtual input column collection
IDTSVirtualInput90 vInput = input.GetVirtualInput();
// Iterate through the column collection
foreach (IDTSVirtualInputColumn90 vColumn in vInput.VirtualInputColumnCollection)
{
// Call the SetUsageType method of the design time instance of the component.
destDesignTime.SetUsageType(input.ID, vInput, vColumn.LineageID, DTSUsageType.UT_READWRITE);
}
//Map external metadata to the inputcolumn
foreach (IDTSInputColumn90 inputColumn in input.InputColumnCollection)
{
IDTSExternalMetadataColumn90 externalColumn = input.ExternalMetadataColumnCollection.New();
externalColumn.Name = inputColumn.Name;
externalColumn.Precision = inputColumn.Precision;
externalColumn.Length = inputColumn.Length;
externalColumn.DataType = inputColumn.DataType;
externalColumn.Scale = inputColumn.Scale;
// Map the external column to the input column.
inputColumn.ExternalMetadataColumnID = externalColumn.ID;
}
}
}
// Add precedence constraints to the package executables
PrecedenceConstraint pcTasks = oPackage.PrecedenceConstraints.Add((Executable)thSQLTask, oPackage.Executables[0]);
pcTasks.Value = DTSExecResult.Success;
for (iCount = 1; iCount <= (oPackage.Executables.Count - 1); iCount++)
{
pcTasks = oPackage.PrecedenceConstraints.Add(oPackage.Executables[iCount - 1], oPackage.Executables[iCount]);
pcTasks.Value = DTSExecResult.Success;
}
// Validate the package
DTSExecResult eResult = oPackage.Validate(oPkgConns, null, null, null);
// Check if the package was successfully executed
if (eResult.Equals(DTSExecResult.Canceled) || eResult.Equals(DTSExecResult.Failure))
{
string sErrorMessage = "";
foreach (DtsError pkgError in oPackage.Errors)
{
sErrorMessage = sErrorMessage + "Description: " + pkgError.Description + "";
sErrorMessage = sErrorMessage + "HelpContext: " + pkgError.HelpContext + "";
sErrorMessage = sErrorMessage + "HelpFile: " + pkgError.HelpFile + "";
sErrorMessage = sErrorMessage + "IDOfInterfaceWithError: " + pkgError.IDOfInterfaceWithError + "";
sErrorMessage = sErrorMessage + "Source: " + pkgError.Source + "";
sErrorMessage = sErrorMessage + "Subcomponent: " + pkgError.SubComponent + "";
sErrorMessage = sErrorMessage + "Timestamp: " + pkgError.TimeStamp + "";
sErrorMessage = sErrorMessage + "ErrorCode: " + pkgError.ErrorCode;
}
MessageBox.Show("The DTS package was not built successfully because of the following error(s):" + sErrorMessage, "Package Builder", MessageBoxButtons.OK, MessageBoxIcon.Information);
return false;
}
// return a successful result
return true;
}
View 2 Replies
View Related
Jul 20, 2005
CREATE PROCEDURE dbo.Synchronization_GetNewRecords(@item varchar(50),@last datetime)ASSET NOCOUNT ONDECLARE @sql nvarchar(4000)SET @sql = 'SELECT * FROM ' + @item + ' WHERE LastUpdated >' + @lastEXEC sp_executesql @sql, N'@Type varchar(50), @Last datetime', @item, @lastThis is my SP. Very simple. But it is throwing the error in the subject line.Any help would be greatly appreciated.
View 1 Replies
View Related
Oct 13, 2006
Hi,
I am havin problems with the following giving a message
Msg 8114, Level 16, State 4, Line 0
Error converting data type varchar to datetime.
exec sp_executesql
@stmt=N'UPDATE CUSTOMER
SET [REQUEST] = @19, [DISC_EXPRY] = @28, [GROUP1] = @29, [GROUP2] = @31, [PR_LEVEL] = @48, [MOD_DATE] = @55, [MEM_CODE] = @63, [MEM_DATE] = @64, [HO_MOD] = @66, [LASTUPDATE] = @78
WHERE [ID] = @Old_1'
, @params=N'@19 nvarchar(4),@28 DateTime,@29 nvarchar(5),@31 nvarchar(5),@48 nvarchar(1),@55 DateTime,@63 nvarchar(7),@64 DateTime,@66 Integer,@78 Float,@Old_1 Integer',
@19= 'NRMA',@28= '1752-09-14',@29= 'ALBUM',@31= 'FRAME',@48= 'A',@55= '2006-10-10',@63= '1003.50',@64= '2006-10-10',@66= 3,@78= 39000.190633,@Old_1= 454636
however, as soon as I remove the datetime fields it works
exec sp_executesql
@stmt=N'UPDATE CUSTOMER
SET [REQUEST] = @19, [GROUP1] = @29, [GROUP2] = @31, [PR_LEVEL] = @48, [MEM_CODE] = @63, [HO_MOD] = @66, [LASTUPDATE] = @78
WHERE [ID] = @Old_1'
, @params=N'@19 nvarchar(4),@29 nvarchar(5),@31 nvarchar(5),@48 nvarchar(1),@63 nvarchar(7),@66 Integer,@78 Float,@Old_1 Integer',
@19= 'NRMA',@29= 'ALBUM',@31= 'FRAME',@48= 'A',@63= '1003.50',@66= 3,@78= 39000.190633,@Old_1= 454636
what am I doing wrong with the datetime parameters?
Grimhael
View 4 Replies
View Related
Aug 21, 2007
I have 2 variables, one is the column name of the table and the otherone is the table name and I need to write this in the "Execute SQLtask" of a "For each loop" container in a ssis package like this:Truncate table <tableName>Insert into <tableName>Exec (' select [' + ?+ '] from '+ ?)It gives me error message when I try run the ssis. However if I putthe above statements into a stored procedure and wrote look this, itworks:spStroedproc ?, ?Do I need to change any of my settings for my "Exec" to work?Thank you in advance
View 9 Replies
View Related
Feb 1, 2007
I built a system where I am sending batches of messages using a single conversation. I want to pull these messages out of my queue using Service Broker. I may have more than one batch sitting in the queue waiting to be picked up, so....
In my SSIS package i started by getting a unique list of conversation_handles where the message type is my end of batch message ( should only be one per batch). Then I used the foreach loop construct thinking I could pass the conversation_handles around and into the data flow.
In the data flow I want to pull all of the messages at once. It looks like the receive statement is designed to do this with the concept of using a table variable.
So I built this SQL to use in for the SQL Command of my OLE DB Source. It gives me this error "Syntax error, permission violation, or other nonspecific errorr"
declare @messages table ( conversation_handle uniqueidentifier, message_type_name sysname, message_body xml );
receive conversation_handle, message_type_name, message_body
from dm.[consultant queue]
into @messages
where conversation_handle = ?
select conversation_handle, message_type_name, message_body
from @messages
If I change it to this, by removing the passed parameter and looking up what should be the same value that I am passing in then it works.
declare @ch uniqueidentifier;
declare @messages table ( conversation_handle uniqueidentifier, message_type_name sysname, message_body xml );
select top 1 @ch = conversation_handle
from dm.[consultant queue]
where message_type_name = 'BatchEnd'
order by queuing_order;
-- select conversation_handle, message_type_name, message_body
receive conversation_handle, message_type_name, message_body
from dm.[consultant queue]
into @messages
where conversation_handle = @ch
select conversation_handle, message_type_name, message_body
from @messages
I have tried sneaking the parameter into the SQL in other ways, but always get the same I have tried sneaking the parameter into the SQL in other ways, but always get the same error message. It just seems that SSIS, or OLE DB, don't want to pass parameters into a block of SQL that is executing this receive command. Has anyone else done something similar to what I am doing here? Any ideas on how to resolve this?
Obviously by using SSIS I want to work on the whole batch at once and not iterate message by message. Right now I just don't like the idea that I am getting the conversation_handle twice and possibly getting a different batch of messages to process.
Thanks!
View 7 Replies
View Related
Apr 23, 2007
Is it possible to run a windows command on SSIS, like a dos command?
Thanks,
Phil
View 3 Replies
View Related
Mar 27, 2007
I AM working on DW building and i m using SSIS.I haev problem with data transformation OLEDB command.I have written a query to clean data in OLEDB command box ,but it takes whole lot of time because at a time it slects 6000 rows from the source and put in to destination but i have 300000 rows to process.How can i increase the size.
View 4 Replies
View Related
Sep 13, 2007
Dear member,
Does any body know how to run SSIS package through the command line?
Thanks
Shamen
View 3 Replies
View Related
Oct 10, 2007
I created a Stored Proc to compute all the data I need to export to a CSV file.
I use the provider MS OLE DB Provider for SQL Server.
It's a very simple package with a single Data Flow Task.
This flow task is using an OLE DB Source to call a simple SQL Command : Exec MyStoredProc.
There are no params.
This Stored Proc is using table variables to compute the data.
It takes about 10 seconds to return anything.
The problem is that the mapping doesn't work with the OLE DB Source.
There are no fields at all shown in the mapping screen.
I tried to replace the Stored Proc by a version which only returns fields and no data.
Then the mapping would work just fine.
The package is then compiling and working fine.
But everytime I put back the real stored proc, even without changing the SQL Command, the SSIS execution breaks at execution.
It keeps saying :
"Error: 0xC0202005 at Data Flow Task, OLE DB Source [477]: Column "RecordType" cannot be found at the datasource."
My guess is that SSIS doesn't wait the 10 secs and thinks the Stored Proc is not returning anything.
What can I do to make this work ?
Thanks,
Vincent
View 3 Replies
View Related
Jan 20, 2006
Hi everyone,
I am having a difficult time debugging a package that I'm working on. I read in BOL that the immediate window should be an option during debugging but I can't find it anywhere(nor can I enable it), and I was planning on using it to access an oledb source property that is using an expression. Is the command window the same as immediate? I didn't orignally think so but I'm not sure. What is the syntax to use for this once I find it?
Thanks,
Adrian
View 2 Replies
View Related
Apr 5, 2006
I am trying to convert a command line using the dtexecui utility. I need to pass three parameters ; account number ,begin and end date to project.
What am i doing wrong ?
DTEXEC /DTS "File SystemArchive Data" /SERVER SRV2 /MAXCONCURRENT " -1 " /CHECKPOINTING OFF /REPORTING EW package /SET "Account_Number";"'00001'" /SET "File_Name";"'C:InetpubwwwrootoutputArchive'" /SET "Begin_Date";"'04/03/2006'" /SET "End_Date";"'04/04/2006'"
Error I get
Microsoft (R) SQL Server Execute Package Utility
Version 9.00.1399.06 for 32-bit
Copyright (C) Microsoft Corp 1984-2005. All rights reserved.
Started: 9:52:49 AM
Warning: 2006-04-05 09:52:51.58
Code: 0x80012018
Source: Archive Data
Description: The configuration entry, "Account_Number", has an incorrect form
at because it does not begin with the package delimiter. Prepend "package" to t
he package path.
End Warning
Warning: 2006-04-05 09:52:51.58
Code: 0x80012017
Source: Archive Data
Description: The package path referenced an object that cannot be found: "Acc
ount_Number". This occurs when an attempt is made to resolve a package path to a
n object that cannot be found.
End Warning
DTExec: Could not set Account_Number value to '00001'.
Started: 9:52:49 AM
Finished: 9:52:51 AM
Elapsed: 2.172 seconds
View 1 Replies
View Related
Feb 24, 2008
All, I am developing the data mart refresh task in SSIS. I wanted to call the package in command prompt. I need help. Can any one give any tips on it. Thanks and appricate in advance.
Regards
Govind
View 2 Replies
View Related
Apr 17, 2007
Hi Everyone!
I'm trying to run have SQL Server Agent excute an SSIS package from the command line and I keep recieving an error message. I will assume that I have miss typed something. Can someone validate that the execute line looks workable?
"C:Program Files (x86)Microsoft SQL Server90DTSBinndtexec.exe" /F "F:ProjectsSSISCustomerMaster_1CustomerMaster_1Package.dtsx" /CONNECTION "APLUS70F70.AKIN";""uid=AKIN;Dsn=APLUS70F70;"" /CONNECTION "CRMPSQL.IBT_Aplus";""Data Source=CRMPSQL;Initial Catalog=IBT_Aplus;Provider=SQLNCLI.1;Integrated Security=SSPI;Auto Translate=False;"" /MAXCONCURRENT " -1 " /CHECKPOINTING OFF /REPORTING EW
Thanks in advance!
Anthony Akin
View 10 Replies
View Related
Jan 3, 2008
I'm trying to use an SSIS script component that will go do a DNS lookup on the contents of an input column. I've already got a vbs function that performs the wshshell.exec and parses the answer for address and/or errors. I'm having trouble with syntax for the call. When I attempt to run it, I get a lot of errors like "Name 'wshell' is not declared", "StdErr" is not a member of 'String'"
Does anyone have an example of a script that calls a command?
I'm fairly new to SSIS, but think I've properly set up the inputs and outputs.
View 9 Replies
View Related
Aug 9, 2006
Hi there
I have small problem with the ADO 2.6 - 2.8 Command object.
I created a Stored procedure preforming some tasks within a tran.
whitin the tran i'm collecting the @@ERROR values and in the end (after tran closing )generating the correct error string - which will be send back to the caller
in the VB6 app, i'm using a command object with the next line:
Set MyRecordset= MyCommand.Execute
In all the cases and option, when i run the SP - the command preform the tasks and return closed recordset (with the currect answer) and i can't read it.
the only solution that worked until now: i need to call MyRecordset.Open which will requery the SP again and generate an error (User defined error).
It happens only when i run command.execute with SP that preforms multitasks and return result recordset.
CAN ANY ONE HELP ME
View 1 Replies
View Related
Dec 23, 2005
I have created ssis package. It has been successfully running at UI level.
But when i am trying to execute it from the command prompt by using dtexec utility it is showing the following error messages.
Error: 2005-12-23 17:01:57.67
Code: 0xC00470FE
Source: Data Flow Task DTS.Pipeline
Description: The product level is insufficient for component "Flat File Source" (1).
End Error
Error: 2005-12-23 17:01:57.67
Code: 0xC00470FE
Source: Data Flow Task DTS.Pipeline
Description: The product level is insufficient for component "Script Component" (9).
End Error
i have entered the command as follows.
dtexec /f "c:somefolderpackage1.dtsx"
Any points regarding this issue would be helpful.
View 7 Replies
View Related
Feb 13, 2008
All,
I am logging all the tasks in my SSIS package to SQL Server. For each task I am logging atleast the Pre-Execute, PostExecute, OnError events. For Script tasks, I have custom logging and I am logging the ScriptTaskLogEntry event too.
When I run the package manually from BIDS, the logging works great ! But when I try to run the package from a job or from the command line, the number of events that is logged greatly reduces. For eg. when manually run, I get 104 records in the log table but when run from the command line I get 23 records only. Most of the custom logging messages from the Script Task do appear. Its the pre and post-execute events that are skipped. Any idea why ?
Here is command line from the job. I also use the same command line with "dtexec" from the command prompt.
/FILE "\MyServerprojectsSSISPackagesIRRLoadingPackage.dtsx" /DECRYPT mypwd /CONNECTION "ATLSQLDEV01.SSAM.User1";"Data Source=ATLSQLDEV01;User ID=user1;Initial Catalog=SSAM;Provider=SQLNCLI.1;Persist Security Info=True;Auto Translate=False;" /CONNECTION CashFlowConnection;"\MyServerpublicReportingLoadingInProgress8634_Cashflow.txt" /CONNECTION "SMTP Connection Manager" ;"SmtpServer=ATLEXCH01;UseWindowsAuthentication=True;EnableSsl=False;" /MAXCONCURRENT " -1 " /CHECKPOINTING OFF /LOGGER "{59B2C6A5-663F-4C20-8863-C83F9B72E2EB}";"LogFile.txt" /LOGGER "{6AA833A1-E4B2-4431-831B-DE695049DC61}";"ATLSQLDEV01.SSAM.User1"
Thanks in advance for your help.
Amir
View 1 Replies
View Related