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

2023-11-29

我有一个 SSIS 包,它运行 SQL 查询并通过数据流任务将其导出到 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 = Dts.Variables["User::sEmailSendFrom"].Value.ToString();
            string sEmailSendFromName = Dts.Variables["User::sEmailSendFromName"].Value.ToString();
            string sAttachmentPath = Dts.Variables["User::sAttachmentPath"].Value.ToString();

            SmtpClient smtpClient = new SmtpClient();
            MailMessage message = new MailMessage();

            MailAddress fromAddress = new MailAddress(sEmailSendFrom, sEmailSendFromName);

            //You can have multiple emails separated by ;
            string[] sEmailTo = Regex.Split(sEmailSendTo, ";");
            int sEmailServerSMTP = int.Parse(sEmailPort);

            smtpClient.Host = sEmailServer;
            smtpClient.Port = sEmailServerSMTP;

            System.Net.NetworkCredential myCredentials =
               new System.Net.NetworkCredential(sEmailUser, sEmailPassword);
            smtpClient.Credentials = myCredentials;

            message.From = fromAddress;

            if (sEmailTo != null)
            {
                for (int i = 0; i < sEmailTo.Length; ++i)
                {
                    if (sEmailTo[i] != null && sEmailTo[i] != "")
                    {
                        message.To.Add(sEmailTo[i]);
                    }
                }
            }

            switch (iPriority)
            {
                case 1:
                    message.Priority = MailPriority.High;
                    break;
                case 3:
                    message.Priority = MailPriority.Low;
                    break;
                default:
                    message.Priority = MailPriority.Normal;
                    break;
            }

            //You can enable this for Attachments.  
            //sAttachmentPath is a string variable for the file path.

            Attachment myAttachment = new Attachment(sAttachmentPath);
            message.Attachments.Add(myAttachment);


            message.Subject = sSubject;
            message.IsBodyHtml = true;
            message.Body = sMessage;

            smtpClient.Send(message);
            System.IO.File.WriteAllText("C:\\Users\\SQLCLservice\\SQLServerAgent\\file.txt", "Test");
            return true;
        }
        catch (Exception ex)
        {
            System.IO.File.WriteAllText("C:\\Users\\SQLCLservice\\SQLServerAgent\\ex.txt", ex.ToString());
            return false;

        }
    }

没有发送电子邮件 - 没有写入文件。尽管“执行成功”,但好像任务根本没有运行。

我确实注意到 SQL Server Integration Services 11.0 服务正在我的本地计算机上运行,​​但不在服务器上运行。但是,如果我在本地计算机上禁用此服务,任务仍然会执行。

我还缺少其他东西吗?我对 SQL Server 还很陌生,我已经研究这个问题好几天了。

编辑:我正在运行 SQL Server 2012

EDIT2:我还应该提到,我尝试将 64 位运行时设置为 false 来保存包,并通过 SQL Server 代理以 32 位模式运行它。


我之前遇到过类似的情况,SSDT(SQL Server Data Tools - 这是 Visual Studio 界面)中一切正常,当我的包部署在 SSMS 中时,只是脚本任务失败了。

使用 SSIS 2012,我加载了一个 Excel 工作表,然后在脚本任务中,我调用了一个 Excel 宏来排序并突出显示工作表中的差异。在 SSDT 环境中一切工作正常,但是当我在 SSMS 中运行(作为计划作业 - 32 位模式)时,脚本任务未执行。但是,我可以看到加载了原始数据的 Excel 工作表 - 没有排序和突出显示差异。

SSMS 包执行日志中未捕获任何错误。正如@Tab Alleman 在评论部分中强调的那样,一些错误已记录在事件查看器中。就我而言,错误记录在Windows 日志 > 系统

enter image description here

访问 Microsoft SQL Server Integration Services 11.0 时显示 SQLSERVERAGENT 的权限错误。

应用程序特定的权限设置不授予本地 具有 CLSID 的 COM 服务器应用程序的激活权限 {FDC3723D-1588-4BA3-92D4-42C430735D7D}和APPID {83B33982-693D-4824-B42E-7196AE61BB05} 至用户 NT 服务\SQLSERVERAGENT

然后在授予适当的访问权限后(描述了授予访问权限的步骤here),当帐户尝试访问 Excel 时,我又收到一个权限错误

机器默认权限设置不授予本地激活 具有 CLSID 的 COM 服务器应用程序的权限 {00024500-0000-0000-C000-000000000046} 和 APPID {00020812-0000-0000-C000-000000000046} 给用户 NT 服务\SQLSERVERAGENT

即使解决了所有权限错误后,我仍然看不到预期的输出。所以我增加了自定义日志记录(参考here对于脚本任务的步骤)。 然后我就可以看到脚本任务中引发的异常。 我的 catch 块如下所示:

  catch (Exception ex)
            {
               Dts.Log(ex.ToString(), 0, emptyBytes);
            }

它将在 sysssislog 表中记录错误(您必须在配置自定义日志记录时配置该表)

select * from [*YourDatabaseName*].[dbo].[sysssislog]

应该列出您的自定义日志。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 内联函数/方法

    声明 内联函数必须在调用之前定义 这个说法正确吗 EDIT 该问题最初是德语 内联功能穆森 弗 伊赫雷姆 奥夫鲁夫定义 sein 也许它对任何人都有帮助 是的 它是正确的 但只是部分正确 它可能正确地重新构建如下 内联函数必须在每个翻译单位
  • 将字节数组转换为托管结构

    更新 这个问题的答案帮助我编写了开源项目GitHub 上的 AlicanC 现代战争 2 工具 https github com AlicanC AlicanC s Modern Warfare 2 Tool 你可以看到我是如何阅读这些数据
  • System.IO.IOException:由于意外>数据包格式,握手失败?

    有谁知道这意味着什么 System Net WebException 底层连接已关闭 发送时发生意外错误 gt System IO IOException 由于意外 握手失败 数据包格式 在 System Net Security SslS
  • 如何尝试/捕获所有异常

    我正在完成由其他人启动的 UWP 应用程序 该应用程序经常崩溃 我总是陷入困境应用程序 at if global System Diagnostics Debugger IsAttached global System Diagnostic
  • C# 正则表达式用于查找 中具有特定结尾的链接

    我需要一个正则表达式模式来查找字符串 带有 HTML 代码 中的链接 以获取文件结尾如 gif 或 png 的链接 示例字符串 a href site com folder picture png target blank picture
  • 在 C# Winforms 应用程序中嵌入 Windows XP 主题

    我有一个旧版 C Windows 窗体应用程序 其布局是根据 Windows XP 默认主题设计的 由于需要将其作为 Citrix 应用程序进行分发 该应用程序现在看起来像经典主题应用程序 因为 Citrix 不鼓励使用主题系统服务 所以
  • 将带有 glut 的点击坐标添加到向量链接列表中

    我想创建一个向量链接列表 并在 GLUT 库的帮助下获取点击的位置并将它们附加到链接列表中 这些是我写的结构 typedef struct vector int x int y Vector typedef struct VectorLis
  • 从成员函数指针类型生成函子

    我正在尝试简化 通过make fn 预处理参数的函子的生成 通过wrap 对于 arity 的成员函数n 生成函子基本上可以工作 但到目前为止只能通过显式指定成员函数的参数类型来实现 现在我想从它处理的成员函数类型生成正确的函子 struc
  • C# 委托责任链

    为了我的理解目的 我实现了责任链模式 Abstract Base Type public abstract class CustomerServiceDesk protected CustomerServiceDesk nextHandle
  • libxml2 xmlChar * 到 std::wstring

    libxml2似乎将所有字符串存储在 UTF 8 中 如xmlChar xmlChar This is a basic byte in an UTF 8 encoded string It s unsigned allowing to pi
  • C++ 插件的“最适合”动态类型匹配

    我有一个几乎所有东西都是插件的架构 该架构以图形用户界面为基础 其中每个插件都由一个 表面 即用户可以通过其与插件交互的 UI 控件 表示 这些表面也是插件 每当添加新插件时 瘦主机都会自动确定哪个可用表面与其最匹配的 UI 如何在 C 中
  • 预处理后解析 C++ 源文件

    我正在尝试分析c 使用我定制的解析器的文件 写在c 在开始解析之前 我想摆脱所有 define 我希望源文件在预处理后可以编译 所以最好的方法是运行C Preprocessor在文件上 cpp myfile cpp temp cpp or
  • C++ 错误 - “成员初始值设定项表达式列表被视为复合表达式”

    我收到一个我不熟悉的 C 编译器错误 可能是一个非常愚蠢的错误 但我不能完全指出它 Error test cpp 27 error member initializer expression list treated as compound
  • asp.net网格分页的SQL查询

    我在用iBatis and SQLServer 使用偏移量和限制进行分页查询的最佳方法是什么 也许我添加该列ROW NUMBER OVER ORDER BY Id AS RowNum 但这只会阻止简单查询的数据访问 在某些情况下 我使用选择
  • DataTable:通过 LINQ 或 LAMBDA 进行动态 Group By 表达式

    我有一个数据表 我想在其中对未指定数量的字段进行分组 发生这种情况的原因是用户可以选择他想要分组的字段 所以 实际上 我将选择推入列表中 在这个选择上 我必须对我的数据表进行分组 想象一下这段代码 VB 或 C 都一样 public voi
  • 初始化 LPCTSTR /LPCWSTR [重复]

    这个问题在这里已经有答案了 我很难理解并使其正常工作 基本上归结为我无法成功初始化这种类型的变量 它需要有说的内容7 2E25DC9D 0 USB003 有人可以解释 展示这种类型的正确初始化和类似的值吗 我已查看此站点上的所有帮助 将项目
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构
  • 类中不允许使用不完整类型,但类模板中允许使用不完整类型

    以下为无效代码 struct foo struct bar bar x error field x has incomplete type struct bar int value 42 int main return foo x valu
  • C++、三元运算符、std::cout

    如何使用 C 用三元运算符编写以下条件 int condition1 condition2 condition3 int double result int or double std cout lt lt condition1 resul
  • 如何使用 C# 以低分辨率形式提供高分辨率图像

    尝试使用 300dpi tif 图像在网络上显示 目前 当用户上传图像时 我正在动态创建缩略图 如果创建的页面引用宽度为 500x500px 的高分辨率图像 我可以使用相同的功能即时转换为 gif jpg 吗 将创建的 jpg 的即将分辨率

随机推荐

  • Xcode 未找到匹配的私钥

    我有一个从另一台 Mac 分发的应用程序 我需要从另一台 Mac 获得什么才能将我的应用程序存档以供上传 以及我需要在 Xcode 路径中进行哪些更改才能使所有工作正常进行 谢谢 抱歉英语不好 如果您使用某人的证书 您还必须获取与该证书关联
  • 什么是词向量维度

    我目前是深度学习的业余爱好者 正在这个网站上阅读有关 word2vector 的内容https www kaggle com c word2vec nlp tutorial details part 3 more fun with word
  • 是否有一个函数可以在给定索引号的情况下生成特定的 n Multichoose r 组合?

    例如 3 multichoose 2 有以下组合 i combo 0 0 0 1 0 1 2 0 2 3 1 1 4 1 2 5 2 2 是否可以编写一个参数为 n r i 的函数并返回有问题的组合 而不迭代之前的每个组合 是否可以编写一个
  • 从控制器 CakePHP 3.x 执行 shell

    我在 CakePHP Shell 中有一个特定任务 它由 CRON 作业执行 但我希望用户能够随时从网络界面 如按钮或类似的东西 执行它 所以 我的问题是 是否可以从控制器执行 shell 在控制器中模拟这一点 bin cake MyShe
  • 获取两个地理点之间的距离

    我想制作一个应用程序来检查用户所在的最近位置 我可以轻松获取用户的位置 并且我已经有了带有纬度和经度的地点列表 了解列表中与当前用户位置最近的位置的最佳方法是什么 我在 google API 中找不到任何内容 Location loc1 n
  • Laravel 如何处理 PHP 警告?

    我正在尝试使用 Laravel 连接到 LDAP 服务器 重要的是我正在使用 PHP 函数ldap connect and ldap bind而不是使用包来处理它 关键是当我提供错误的用户名和密码时 ldap bind函数给我们一个 PHP
  • “*apply”家族真的没有矢量化吗?

    所以我们习惯对每个 R 新用户说 apply没有矢量化 看看 Patrick BurnsR地狱圈 4 其中说 我引用 常见的反应是使用 apply 系列中的函数 这不是 向量化 它是循环隐藏的 apply 函数有一个 for 循环 它的定义
  • 将数据发送到另一个可能启动的活动

    我有一个 BroadcastReceiver 用于将数据发送到另一个可能正在运行或未运行的活动 我在 onReceive 方法中使用意图 并 使用 putExtra 将数据放入 数据被发送到活动 但是 即使活动已经在前台运行 活动的 onC
  • 如何在 Eclipse 中强制设置 JFace 向导的最小高度?

    我正在呈现一个向导 代码here 的值太低 因此内容无法完全显示 请参见下面的屏幕截图 如何强制向导具有最小高度 根据上的回答这个问题在 StackOverflow 上 向导将与向导中最大的向导页具有相同的高度 但我的向导显然不会至少根据c
  • 如何将二维数组传递给C中的函数?

    我的函数原型是 int rotate int arr int row int col int fl where arr是二维数组 row and col分别是二维数组的行数和列数 fl是一个标志变量 如果值fl is 0那么数组将向右旋转
  • ipython:操作错误:磁盘 I/O 错误

    到目前为止 我一直在 fedora 18 上成功运行 ipython 尝试启动它时出现以下异常 Traceback most recent call last File usr bin ipython line 9 in
  • 无法使用jsoup登录网站

    我正在尝试登录这个网站 这是我到目前为止所尝试过的 但它似乎不起作用 try Connection Response login Jsoup connect login url method Connection Method GET ex
  • Grafana 世界地图:表数据源

    我正在尝试使用 grafana 的世界地图插件 以表数据作为数据源 在我的例子中为 influxdb 该插件得到了最新版本的支持 link 但遗憾的是我无法让它发挥作用 我使用与插件文档中相同的查询 但我的世界地图中没有显示任何点 以下是我
  • 如何将 Qline 坐标发送到 QPainter 小部件

    我创建了一个 Qwidget Form temp 它根据父窗口小部件 MainWindow 中创建的数据数组绘制线条 我面临的问题是我通过槽 send data 从 MainWindow 发送到 Form temp 的数据不被 Form t
  • 根据需要设置 reCaptcha 字段

    我使用新的 reCaptchajQuery 验证插入 验证插件适用于我的表单 但不幸的是它不适用于 reCaptcha 我尝试让它工作如下 HTML div class g recaptcha div JavaScript recaptch
  • 为什么我不能创建这样的 numpy 数组: array([1, 2], 3)

    from numpy import array test list 1 2 3 x array test list ValueError setting an array element with a sequence 基本上 我有一个带有
  • 如何访问 iFrame 中的 DOM 元素

    我正在编写一个 jQuery 插件 它需要能够针对 iFrame 中的 DOM 元素运行 我现在只是在本地测试这个 即 url 是 file example html 在 Chrome 中我一直点击 SecurityError 无法从 HT
  • 在 C# 中将 MM:SS 字符串转换为 HH:MM:SS

    我有这段代码可以很好地将 HH MM SS 转换为整数秒 for int i 0 i lt nrdaily Rows Count i double NRT TimeSpan Parse nrdaily Rows i 3 ToString T
  • 从 WiX 更改 XML 节点值

    我希望能够从 WiX 更改 XML 节点值 XML 结构如下所示
  • SSIS正在成功执行,但它似乎没有运行脚本任务部分

    我有一个 SSIS 包 它运行 SQL 查询并通过数据流任务将其导出到 csv 文件 创建 csv 后 我设置了一个 脚本任务 来连接到 SMTP 服务器并将 csv 文件作为附件发送 在我的本地计算机上 该包运行良好 但是当我将其加载到服