标签: script-task

SSIS 脚本任务:如何使用 Dts.Log 记录到输出

我为此搜索了很多,但没有运气。

我有一个脚本任务,在里面我写了一些 C# 代码。我看看,我想像我们看到的那样打印输出Output Window

我正在使用 Dts.Log() 使用以下代码:

Dts.Log("List of files are loaded: ", 0, new byte[0]);
Run Code Online (Sandbox Code Playgroud)

但是我在输出窗口中没有看到任何内容。

如您所见,我已经启用了日志记录:

SSIS 日志配置

我知道如果我使用

Dts.Events.FireInformation
Run Code Online (Sandbox Code Playgroud)

它可以完成这项工作,但我想知道如何将其Dts.Log()用于此目的。

logging ssis script-task

5
推荐指数
1
解决办法
6627
查看次数

SSIS如何在脚本任务中执行dll(未找到SharePoint函数)

我不能在 SSIS 脚本任务中使用特定的 DLL。在 c# 控制台项目中,一切都很好。SSIS 抛出错误:

错误:无法加载程序集“Microsoft.SharePoint.Client,Version=14.0.0.0,Culture=neutral PublicKeyToken=....”中的类型“Microsoft.SharePoint.Client.ClientRuntimeContext”。

我正在使用 Datatools 运行 Visual Studio 2017。我从 NuGet-paket-manager 获取库并将它们保存在本地 C:/

  • Microsoft.SharePoint.Client,版本 14.0.0.0,运行时版本 v2.0.50727
  • Microsoft.SharePoint.Client.Runtime,版本 15.0.0.0,运行时版本 v4.0.30319

我的控制台项目是 .NET 4.6,我也将 SSIS 项目设置为 .NET 4.6。在这两种情况下,我都通过右键单击“引用”>“添加”>“从计算机搜索”添加了库

我刚刚测试了一个控制台项目,没有任何问题:


static void Main(string[] args)
{
    using (ClientContext clientContext = new ClientContext("urltomysite.com"))
    {
    }
    Console.WriteLine("finished");
}

Run Code Online (Sandbox Code Playgroud)

这是SSIS中的代码(它是类似的......只使用对象ClientContext:


public void Main()
{
    //Loading assemblies extra
    AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
    AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve2);

    try
    {
        //Testing the assembly method
        Class1.TESTIT();
    }
    catch (Exception ex)
    {
        Dts.Events.FireError(0, "Error", ex.Message, null, 0); …
Run Code Online (Sandbox Code Playgroud)

c# dll sharepoint ssis script-task

5
推荐指数
1
解决办法
858
查看次数

在第 0 行的“C:\”中找不到路径的一部分

我遇到了Script Taskin的错误SSIS package。我可以找到类似的问题,但它们与我的场景不同。

构建脚本失败并出现以下错误(错误列表请参考下图):

严重性代码描述项目文件行抑制状态错误找不到路径“C:\Users\name\AppData\Local\Temp\2\Vsta\166f3f6a0a3b4d2b9bce8275652e86c5_out”的一部分。
ST_e39a74fadbb04a8088f3dcc732f67cf0 C:\Users\name\AppData\Local\Temp\2\Vsta\SSIS_ST140\VstagyjdfDg98EOThQux2q_T5A\VstaFGRuzNpZdEeMuG1mscorXzy0

错误列表:

错误列表中的错误

我可以理解这个错误File not found in the path。好的。我可以更改路径,但它显示line: 0. 当我单击错误时,我收到以下通知。

信息:

在此处输入图片说明

所以,现在我的问题是,

项目中存在这条路径吗?如何解决这个错误?

笔记:

  1. 我正在使用以下版本的 VS Code。

Microsoft Visual Studio Community 2019 版本 16.9.1 VisualStudio.16.Release/16.9.1+31105.61 Microsoft .NET Framework 版本 4.7.03062

  1. *_out每次构建时都会更改错误的文件名。

谢谢,

普加尔。

c# ssis script-task

4
推荐指数
1
解决办法
2270
查看次数

如何在SSIS脚本组件中使用OLEDB连接执行SqlCommand

我正在使用 SSIS 2019,并且能够使用 ADO.Net 连接管理器执行 SQL 命令。我想在数据流任务内的脚本组件中使用 OLEDB 连接管理器,但收到以下错误:

System.InvalidCastException:无法将类型“System.__ComObject”的 COM 对象强制转换为类类型“System.Data.SqlClient.SqlConnection”。表示 COM 组件的类型实例不能转换为不表示 COM 组件的类型;但是,只要底层 COM 组件支持对接口 IID 的 QueryInterface 调用,它们就可以转换为接口。

在此输入图像描述 有人可以告诉我我们是否可以在数据流的 SSIS 脚本组件中使用 OLEDB 连接吗?

这是连接字符串的代码

  public override void PreExecute()
    {
        string conn = this.Connections.Connection.ConnectionString;
    }
Run Code Online (Sandbox Code Playgroud)

我在脚本 C# 代码中没有收到构建错误。但在脚本组件中出现错误。

sql-server ssis etl oledbconnection script-task

4
推荐指数
1
解决办法
4547
查看次数

SSIS正在成功执行,但它似乎没有运行脚本任务部分

我有一个运行SQL查询的SSIS包,并通过数据流任务将其导出到csv文件.创建csv后,我将"脚本任务"设置为连接到SMTP服务器并将csv文件作为附件发送.

在我的本地计算机上,程序包运行正常,但是当我将其加载到服务器上的SQL Server Management Studio时,它无法正常工作.SQL Server MS表示程序包已成功执行,并且csv文件是在预期的位置生成的.但是,"脚本任务"似乎根本没有执行.我在C#脚本中包含了一些语句,用于写入文件以进行调试 - 一个用于try/catch异常块,另外一个用于正常执行.

    public void Main()
    {
        string sSubject = "Weekly PAX Test";
        string sBody = "Test Message";
        int iPriority = 2;

        if (SendMail(sSubject, sBody, iPriority))
        {
            Dts.TaskResult = (int)ScriptResults.Success;
        }
        else
        {
            //Fails the Task
            Dts.TaskResult = (int)ScriptResults.Failure;
        }
    }

    public bool SendMail(string sSubject, string sMessage, int iPriority)
    {
        try
        {
            string sEmailServer = Dts.Variables["User::sEmailServer"].Value.ToString();
            string sEmailPort = Dts.Variables["User::sEmailPort"].Value.ToString();
            string sEmailUser = Dts.Variables["User::sEmailUser"].Value.ToString();
            string sEmailPassword = Dts.Variables["User::sEmailPassword"].Value.ToString();
            string sEmailSendTo = Dts.Variables["User::sEmailSendTo"].Value.ToString();
            string sEmailSendFrom …
Run Code Online (Sandbox Code Playgroud)

c# sql-server csv ssis script-task

3
推荐指数
1
解决办法
2万
查看次数

为什么BIML ScriptTask失败,直到我在VS中打开脚本并保存包

我有这个BIML脚本,它创建了一个主包和子包.子包中有一个ScriptTask,它将父包变量的值映射到子包变量.当我在SSIS(Visual Studio 2015,目标Sql Server 2014)中生成包时,它们生成正常.如果我运行主程序包,则子程序失败并显示以下错误:

DTS Script Task has encountered an exception in user code:
Project name:  ST_GetJobLogIdHere
Exception has been thrown by the target of an invocation.

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()
Run Code Online (Sandbox Code Playgroud)

当我在孩子中打开ScriptTask,然后再次关闭它时,包脏了,所以我保存它.之后,运行包正常工作.

这是BIML脚本:

<Biml xmlns="http://schemas.varigence.com/biml.xsd">

    <ScriptProjects>
        <ScriptTaskProject …
Run Code Online (Sandbox Code Playgroud)

ssis biml script-task

2
推荐指数
1
解决办法
889
查看次数

无法加载文件或程序集 SSIS 脚本任务

我有一个带有脚本任务的 DTSx,它将替换 Word 文档中的一些标签,然后将其另存为 PDF,但它不断显示错误:“无法加载文件或程序集 '' 或其依赖项之一。系统找不到该文件指定的。” 我尝试过使用 Aspose、GemBox、Syncfusion,错误总是相同的。当我从 NuGet 使用它们时,任务甚至不会启动...但是当我将 DLL 和所有附加文件复制到计算机中的文件夹时,它会显示上述错误。我用的是框架4。

你能帮忙吗?

谢谢。

c# ssis script-task

2
推荐指数
1
解决办法
4351
查看次数

从受密码保护的Zip文件中提取

这是我的要求,我需要从受密码保护的压缩文件中提取文件.我想知道是否有任何代码片段可用.我正在使用SSIS从FTP下载这些压缩文件.是否有我可以使用的4.5框架的最新更新.

更新:

我现在已经引用了该文件并尝试了一个示例,但现在我得到了一个例外,我甚至尝试在我的脚本任务中添加一个断点,但我得到的只是一个例外.

例外:

   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()
Run Code Online (Sandbox Code Playgroud)

快照: 在此输入图像描述

码:

try
    {
            string zipfilePath = @"C:\ZipFiles";
            string zipPassword = "qwerty";
        using (ZipFile zip = new ZipFile())
        {
            zip.Password = zipPassword;
            zip.AddFile("File-01.txt");
            zip.AddFile("File-02.txt");
            zip.AddFile("File-03.txt");
            zip.AddFile("File-04.txt");
            zip.Save(zipfilePath + "AllFiles.zip");
        } …
Run Code Online (Sandbox Code Playgroud)

c# ssis dotnetzip .net-4.5 script-task

1
推荐指数
1
解决办法
5093
查看次数

SSIS:在SQL Server代理作业运行期间使Excel在脚本任务中可见

我在SSIS中构建了一个包,它使用脚本任务在Excel中打开Excel文件,格式化和刷新一些数据.我希望在脚本任务运行时看到Excel,以查看Excel是否一直挂起.这可能吗?我正在转换一个通过shell脚本调用Excel的进程,而不是使用SSIS来调用Excel.我想第二个问题是,这是个坏主意吗?

excel jobs ssis visible script-task

-2
推荐指数
1
解决办法
1093
查看次数