Import Excel sheet data into SQL Table using SSIS programmatically - c#

I am trying to implement a solution for importing Excel sheet data into a SQL table in SSIS programmatically using C#, through Edit Script task.
Unfortunately, i do not find any simple example on how to achieve similar solution online.
Below is the code which i tried in Edit Script window and it is throwing me the below error.
public void Main()
{
ADODB.Connection conn=new ADODB.Connection();
string strSQL;
object lngRecsAff;
conn.Open(#"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Engagements\QCRT\SSIS\InputFolder\Order.xlsx;Extended Properties=Excel 12.0","","",0);
strSQL = #"SELECT * INTO [ODBC;Driver={SQL Server};Server=IN45216580W1\SQLEXPRESS;Database=[Northwind]].[dbo].[Order_Test1] FROM [1$]";
conn.Execute(strSQL,out lngRecsAff,0);
Dts.TaskResult = (int)ScriptResults.Success;
}
Error Message:
Error: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Runtime.InteropServices.COMException (0x80004005): Could not find installable ISAM.
at ADODB.ConnectionClass.Open(String ConnectionString, String UserID, String Password, Int32 Options)
at ST_2d2b7b209a00481087e0c1720214c207.csproj.ScriptMain.Main()
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, CultureInfo culture)
at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()
I am very new to SSIS and What am i doing wrong.

Related

How to check valid object in PropertyDescriptor?

I'm working in WinForms application and used the BindingList datasource. I need to check the whether the object is valid or not with PropertyDescriptor. because
PropertyDescriptor.GetValue(object obj) will works for valid object. but sometimes i has the "TargetInvocationException". So i want to check if that object is valid or not before get the value.
[https://i.stack.imgur.com/VsdeW.png]
here is the stacktrace:
System.Reflection.TargetException: Object does not match target type.
at System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target)
at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.SecurityUtils.MethodInfoInvoke(MethodInfo method, Object target, Object[] args)
at System.ComponentModel.ReflectPropertyDescriptor.GetValue(Object component)
--- End of inner exception stack trace ---
at System.ComponentModel.ReflectPropertyDescriptor.GetValue(Object component)
In the case that you will already need to execute the call, it will be far easier and less expensive to just try the call and do something different if it fails.
try
{
PropertyDescriptor.GetValue(...);
}
catch (TargetException ex)
{
// do the thing you would do if the object wasn't valid.
}

Nunit 3.2.1 failing only when using console runner

I'm developing framework using c# and selenium. When I am using ReSharper to run my tests everything is working fine.
TCSA = TestCaseSource artibute
But I have strange problem with Nunit 3.2.1 console runner. I have 5 tests and each of them is using one of two TCSA. When I had about 3 tests everything was running fine. But when I add some more then Im getting error on that situation:
When 1st test finish with all TCSA, then 2nd test starts. On second TCSA of 2nd test, Nunit is failing before starting test with another TCSA:
1) Error :
Exception has been thrown by the target of an invocation.
Server stack trace:
w System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
w System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
w System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)
w System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
w System.Activator.CreateInstance(String assemblyString, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activatio
nAttributes, Evidence securityInfo, StackCrawlMark& stackMark)
w System.Activator.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationA
ttributes, Evidence securityInfo)
w System.AppDomain.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationA
ttributes, Evidence securityAttributes)
w System.AppDomain.CreateInstanceAndUnwrap(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] ac
tivationAttributes, Evidence securityAttributes)
w System.AppDomain.CreateInstanceAndUnwrap(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] ac
tivationAttributes, Evidence securityAttributes)
w NUnit.Engine.Drivers.NUnit3FrameworkDriver.Run(ITestEventListener listener, String filter)
w NUnit.Engine.Runners.DirectTestRunner.RunTests(ITestEventListener listener, TestFilter filter)
w System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
w System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)
Exception rethrown at [0]:
w System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
w System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
w NUnit.Engine.ITestEngineRunner.Run(ITestEventListener listener, TestFilter filter)
w NUnit.Engine.Runners.ProcessRunner.RunTests(ITestEventListener listener, TestFilter filter)
Test Run Summary
Overall result: Failed
Test Count: 0, Passed: 0, Failed: 0, Inconclusive: 0, Skipped: 0
Start time: 2016-05-19 08:26:28Z
End time: 2016-05-19 08:32:11Z
Duration: 343,116 seconds
Does anyone know what is the source of this problem?

Error when running JSON.NET

I have added the using statement to the class I am running:
using Newtonsoft.Json.Linq;
And I am referencing the Newtonsoft.Json.dll in the same project.
I get no compile-time errors. But I do get a run-time one. I cant even do simple code like this (the hello doesn't show up before crashing):
public void Main()
{
MessageBox.Show("hello");
JObject j = new JObject();
Dts.TaskResult = (int)ScriptResults.Success;
}
I get the following error:
DTS Script Task has encountered an exception in user code: Exception has been thrown by the target of an invocation
With the following StackTrace:
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()
Anyone know what this might be causing this?

What permission set does the AppDomain CreateInstance required?

I have the following code,
appDomain.CreateInstance(
assemblyName, typeName, false, BindingFlags.NonPublic | BindingFlags.Instance,
null, new object[] { language, encoding }, CultureInfo.CurrentCulture, null).Unwrap()
I am getting this error,
System.Security.SecurityException: Request failed.
StackTrace,
at System.RuntimeMethodHandle.PerformSecurityCheck(Object obj, RuntimeMethodHandleInternal method, RuntimeType parent, UInt32 invocationFlags)
at System.RuntimeMethodHandle.PerformSecurityCheck(Object obj, IRuntimeMethodInfo method, RuntimeType parent, UInt32 invocationFlags)
at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at System.Activator.CreateInstance(String assemblyString, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, Evidence securityInfo, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at System.AppDomain.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at System.AppDomain.CreateInstance(String assemblyName, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes)
at RazorEngine.Templating.IsolatedTemplateService..ctor(Language language, Encoding encoding, IAppDomainFactory appDomainFactory) in c:\Users\XX\Downloads\RazorEngine-850082854d1d046d27fb92af8849a2522c2a0246\RazorEngine-850082854d1d046d27fb92af8849a2522c2a0246\src\Core\RazorEngine.Core\Templating\IsolatedTemplateService.cs:line 72
at RazorEngine.Templating.IsolatedTemplateService..ctor(Language language, Encoding encoding, Func`1 appDomainFactory) in c:\Users\XX\Downloads\RazorEngine-850082854d1d046d27fb92af8849a2522c2a0246\RazorEngine-850082854d1d046d27fb92af8849a2522c2a0246\src\Core\RazorEngine.Core\Templating\IsolatedTemplateService.cs:line 91
at RazorEngine.Templating.IsolatedTemplateService..ctor(Func`1 appDomainFactory) in c:\Users\XX\Downloads\RazorEngine-850082854d1d046d27fb92af8849a2522c2a0246\RazorEngine-850082854d1d046d27fb92af8849a2522c2a0246\src\Core\RazorEngine.Core\Templating\IsolatedTemplateService.cs:line 56
at TemplateGenerator.Generate(String template, Object model, Int32 productsPerPage) in e:\TFS WorkSpaces\XX\XXWeb App\Solution\Helpers\TemplateGenerator.cs:line 42
SecurityException.Demanded,
{<PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true"/>}
SecurityException.GrantedSet,
<PermissionSet class="System.Security.PermissionSet"
version="1">
<IPermission class="System.Security.Permissions.ReflectionPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1"
Unrestricted="true"/>
<IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1"
Flags="Execution"/>
</PermissionSet>

Parsing proprety info C#

Guys i've the following loop, and if is a List i've to loop again, until here i'm okay, but inside this another loop I got a problem, because i've to loop not in "propretyinfo", i've to loop in object of this PropretyInfo and get this values, i've tried a hard parse here :
(List<ItemDeMescla>)objeto.GetValue(objeto, null)
But it was throwing an excepetion, any idea how to parse it and works?
foreach (PropertyInfo objeto in processo.GetType().GetProperties())
{
corpoEmail += CriarLinhaEmail(objeto.Name, Convert.ToString(objeto.GetValue(processo, null)), false);
if (objeto.PropertyType.IsGenericType && (objeto.PropertyType.GetGenericTypeDefinition() == typeof(System.Collections.Generic.List<>)))
{
List<ItemDeMescla> itensMescla = (List<ItemDeMescla>)objeto.GetValue(objeto, null);
foreach (ItemDeMescla item in itensMescla)
{
tabelasAux.Add(CriarTabelaInternaEmail<ItemDeMescla>(item, objeto.Name));
}
}
}
The error stack:
at System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target)
at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, BindingFlags invokeAttr, Binder binder, Object[] index, CultureInfo culture)
at System.Reflection.RuntimePropertyInfo.GetValue(Object obj, Object[] index)
at SACG.Services.Integracao.Integracao.Utils.MontarCorpoEmail[T](T processo, String mensagem) in c:\Projetos\Cotrijal\Branch\1.8.0.0\Cotrijal\Servicos\SACG.Services.Integracao\Integracao\Utils.cs:line 176
at SACG.Services.Integracao.Integracao.Utils.EnviarEmail[T](T processo, Int32 codigoDaUnidade, String mensagem, String assunto) in c:\Projetos\Cotrijal\Branch\1.8.0.0\Cotrijal\Servicos\SACG.Services.Integracao\Integracao\Utils.cs:line 114
at SACG.Services.Integracao.Integracao.IntegracaoDaExpedicao.SalvarExpedicao(ExpedicaoGraos expedicaoDto, Usuario usuarioLogado) in c:\Projetos\Cotrijal\Branch\1.8.0.0\Cotrijal\Servicos\SACG.Services.Integracao\Integracao\IntegracaoDaExpedicao.cs:line 111
at SACG.Services.Integracao.ExpedicaoDeGraos.RegistrarExpedicao(ExpedicaoGraos expedicao) in c:\Projetos\Cotrijal\Branch\1.8.0.0\Cotrijal\Servicos\SACG.Services.Integracao\ExpedicaoDeGraos.asmx.cs:line 104
Try getting value of an object, instead of PropertyInfo:
(List<ItemDeMescla>)objeto.GetValue(processo, null)
Try
objeto.GetValue(processo, null)
Instead of
objeto.GetValue(objeto, null)

Categories