Hi all,
I am new to ssis. I try to create a package completely by vb.net to export a table in sql server to text file. i got the following error while i run the package,
An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available. Source: "Microsoft OLE DB Provider for ODBC Drivers"
Hresult: 0x80004005 Description: "[Microsoft][ODBC Driver Manager]
Data source name not found and no default driver specified".
The AcquireConnection method call to the connection manager "OLEDBSrc"
failed with error code 0xC0202009.
component "OLE DB Source" (1) failed validation and returned error code 0xC020801C.
One or more component failed validation.
There were errors during task validation.
i have posted my code below,
Dim pkg As New Package
Dim OLEDBConMgr As ConnectionManager
Dim FileConMgr As ConnectionManager
Dim SrcComponent As IDTSComponentMetaData90
Dim SrcInstance As CManagedComponentWrapper
Dim DesComponent As IDTSComponentMetaData90
Dim DesInstance As CManagedComponentWrapper
pkg.PackageType = DTSPackageType.DTSDesigner90
Dim e As Executable = pkg.Executables.Add("DTS.Pipeline.1")
Dim thMainPipe As TaskHost = e 'as Task Host
Dim DataFlowTask As MainPipe = thMainPipe.InnerObject 'as MainPipe
'OLEDB Connection Manager
OLEDBConMgr = pkg.Connections.Add("OLEDB")
OLEDBConMgr.ConnectionString = "Data Source=srcServerName;Initial Catalog=srcDBName;Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Auto Translate=False;"
OLEDBConMgr.Name = "OLEDBSrc"
OLEDBConMgr.Description = "OLEDB Connection to flightinfo database"
'FlatFile Connection Manager
FileConMgr = pkg.Connections.Add("FLATFILE")
FileConMgr.ConnectionString = "//FilePath"
FileConMgr.Name = "FLATFILE"
FileConMgr.Description = "Flat File Connection to the file"
FileConMgr.Properties("DataRowsToSkip").SetValue(FileConMgr, 0)
FileConMgr.Properties("Format").SetValue(FileConMgr, "Delimited")
FileConMgr.Properties("ColumnNamesInFirstDataRow").SetValue(FileConMgr, False)
FileConMgr.Properties("Unicode").SetValue(FileConMgr, False)
FileConMgr.Properties("RowDelimiter").SetValue(FileConMgr, vbCrLf)
FileConMgr.Properties("TextQualifier").SetValue(FileConMgr, "<none>")
FileConMgr.Properties("HeaderRowsToSkip").SetValue(FileConMgr, 0)
FileConMgr.Properties("HeaderRowDelimiter").SetValue(FileConMgr, vbCrLf)
FileConMgr.Properties("CodePage").SetValue(FileConMgr, 1252)
'Create Source Component
SrcComponent = DataFlowTask.ComponentMetaDataCollection.[New]
SrcComponent.ComponentClassID = "DTSAdapter.OLEDBSource"
SrcComponent.Name = "OLEDB"
'Get the Design time instance of the component
SrcInstance = SrcComponent.Instantiate
'Initialize the component
SrcInstance.ProvideComponentProperties()
'Specify the Connection Manager
If SrcComponent.RuntimeConnectionCollection.Count > 0 Then
SrcComponent.RuntimeConnectionCollection(0).ConnectionManagerID = OLEDBConMgr.ID
SrcComponent.RuntimeConnectionCollection(0).ConnectionManager = DtsConvert.ToConnectionManager90(OLEDBConMgr)
End If
'Set the Custom Properties
SrcInstance.SetComponentProperty("AccessMode", 0)
SrcInstance.SetComponentProperty("OpenRowset", "[dbo].[srcTableName]")
'ReInitialize the metadata
'SrcInstance.AcquireConnections(Nothing)
'SrcInstance.ReinitializeMetaData()
'SrcInstance.ReleaseConnections()
'Create Destination Component
DesComponent = DataFlowTask.ComponentMetaDataCollection.[New]
DesComponent.ComponentClassID = "DTSAdapter.FlatFileDestination"
DesComponent.Name = "FLATFILE"
'Get the Design time instance of the component
DesInstance = DesComponent.Instantiate
'Initialize the component
DesInstance.ProvideComponentProperties()
'Specify the Connection Manager
If DesComponent.RuntimeConnectionCollection.Count > 0 Then
DesComponent.RuntimeConnectionCollection(0).ConnectionManagerID = FileConMgr.ID
DesComponent.RuntimeConnectionCollection(0).ConnectionManager = DtsConvert.ToConnectionManager90(FileConMgr)
End If
'ReInitialize the metadata
'DesInstance.AcquireConnections(Nothing)
'DesInstance.ReinitializeMetaData()
'DesInstance.ReleaseConnections()
Dim path As IDTSPath90 = DataFlowTask.PathCollection.[New]
path.AttachPathAndPropagateNotifications(SrcComponent.OutputCollection(0), DesComponent.InputCollection(0))
' Get the destination's default input and virtual input.
Dim input As IDTSInput90 = DesComponent.InputCollection(0)
Dim vInput As IDTSVirtualInput90
vInput = input.GetVirtualInput()
'Iterate through the virtual column collection.
Dim vColumn As IDTSVirtualInputColumn90
' Iterate through the virtual input column collection.
For Each vColumn In vInput.VirtualInputColumnCollection
' Call the SetUsageType method of the destination
' to add each available virtual input column as an input column.
DesInstance.SetUsageType(input.ID, vInput, vColumn.LineageID, DTSUsageType.UT_READONLY)
Next
' Verify that the columns have been added to the input.
For Each inputColumn As IDTSInputColumn90 In DesComponent.InputCollection(0).InputColumnCollection
MsgBox(inputColumn.Name)
Next
Dim pkgResult As DTSExecResult
pkgResult = pkg.Execute
Is there anybody know it? plz help me.
regards,
sivani
OLEDBConMgr.ConnectionString = "Data
Source=srcServerName;Initial
Catalog=srcDBName;Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist
Security Info=False;Auto Translate=False;"
Might be something with your connection string, Try:
"Data Source=srcServerName;Initial Catalog=srcDBName;Provider=SQLNCLI.1;Integrated Security=SSPI;Auto Translate=False;"|||
I changed the connection string but still i got the same error and in path creation,
Dim path As IDTSPath90 = DataFlowTask.PathCollection.[New]
path.AttachPathAndPropagateNotifications(SrcComponent.OutputCollection(0), DesComponent.InputCollection(0))
the following error occured at the endpoint while debugging
ErrorCode = -2147467259
Error HRESULT E_FAIL has been returned from a call to a COM component.
Thanks a lot.
The connection string is the problem. i corrected the error but in flat file validation i got the following error, i think its related with column mapping but i dont know abt it. plz help me. the error is,
"component "FLATFILE" (31)" failed validation and returned validation status "VS_NEEDSNEWMETADATA".
One or more component failed validation.
There were errors during task validation.
|||
Hi,
Anybody has any idea to solve the "VS_NEEDNEWMETADATA" problem.
thanks
sivani.
|||What is the VS_NEEDNEWMETADATA problem?|||Hi,
I already posted the problem in,
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1204015&SiteID=1
plz find it.
thanks
Sivani
|||You are correct, the problem is related to the column mappings.
There are no external columns created in the above post for the flat file destination, nor are there any mapping to those columns. Hence, there is nothing to map the oledb sourced input columns into.
See the example (if you've downloaded the 2005 Samples) located by default at "%ProgramFiles%\Microsoft SQL Server\90\Samples\Integration Services\Programming Samples\Control Flow\CreatePackage Sample\VB" which does exactly what you're attempting here. The sample is a programmatic package builder which instantiates an OLEDB source that ends up in a flat file destination.
|||Hi,
Thanks for ur suggestion. i solved the problem.
Thanks & Regards,
Sivani
No comments:
Post a Comment