【发布时间】:2020-07-30 05:59:41
【问题描述】:
我正在尝试(我需要)创建小型 Web 应用程序来管理一些 ETL 流程,为我的用户提供几个按钮来查看 SQL Server 数据并运行几个 SSIS 包。
我能够使用 C# ASP.NET MVC CRUD 教程 HERE(非常有用)来处理网站创建并显示我需要的数据。
然后我创建了一个指向我的表和存储过程的数据模型,现在我“只”需要创建一个带有文本框的基本页面,以便为我需要运行的每个存储过程插入一个参数和一个按钮。
每个存储过程都将运行一个 SSIS 包,目前不需要返回任何值。
编辑:我能够收集更多信息并像这样修改代码
控制器
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Threading.Tasks;
using System.Net;
using System.Web;
using System.Web.Mvc;
using Italist_Admin.Models;
using System.Data.SqlClient;
using System.Data.Entity.Core.Objects;
namespace Project.Controllers
{
public class ToolsController : Controller
{
private ProjectEntities db = new ProjectEntities();
public ActionResult Index()
{
ProjectEntities entities = new ProjectEntities();
//return View(entities.SPU_RUNSSIS(""));
return View();
}
[HttpPost]
public ActionResult ExecExportOnly(string txtPeriod) // to get the Student Details
{
ProjectEntities entities = new ProjectEntities();
entities.SPU_RUNSSIS(parameter);
return View();
}}}
查看
@{
ViewBag.Title = "Tools";
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Export Only</title>
</head>
<body>
<div>
@using (Html.BeginForm("ExecExportOnly", "Tools", FormMethod.Post))
{
<span>Period:</span> @Html.TextBox("txtPeriod")
<input type="submit" value="Run Export" />
}
</div>
</body>
</html>
型号
public virtual int SPU_RUNSSIS(string parameter)
{
var periodParameter = period != null ?
new ObjectParameter("parameter", parameter) :
new ObjectParameter("parameter", typeof(string));
((IObjectContextAdapter)this).ObjectContext.CommandTimeout = 300;
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("SPU_RUNSSIS", parameterParameter);
}
我在模型中添加了超时,因为在执行时,30 秒后它由于超时而失败。
运行此代码,打包失败(SqlException:包失败。请检查 SSIS 目录日志以获取更多信息)大约 30 秒后,在我看到的 30 秒结束时SQL 跟踪以下消息
RPC:已完成 - exec [dbo].[SPU_RUNSSIS] @parameter='parametervalue'
如果我手动运行上面的代码,它可以工作。
我快到了,但似乎在某个时候找不到触发存储过程执行的正确方法。
提前感谢您的任何建议
【问题讨论】:
-
根据错误信息,似乎包确实执行了:SqlException: The package failed。查看 SSIS 目录日志以获取更多信息。该执行的 ssis 目录报告中有什么内容?
-
没什么,其实ssis包没有运行。如果我手动执行相同的 SQL 代码,它会正确启动。
-
我无法关注你。你说运行包失败的代码,但是在你的 cmets 中你说它没有运行。说明包失败的错误消息来自哪里?
-
好吧,这确实很奇怪。消息从 vs 调试器返回,但 ssis 甚至没有启动。
-
也许检查连接详细信息并确保它在您希望它运行的服务器上运行
标签: c# entity-framework stored-procedures ssis asp.net-mvc-5