- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个长期运行的 SSIS 包,其中包含许多数据流任务(有关 SSIS 的详细信息,请参阅 this question)。在这些任务之间,我想将实时状态更新发送到在 IIS 7.0 中托管的面向 Intranet 的 ASP.NET MVC 4 应用程序中运行的 SignalR 中心,以便用户可以查看进度。
从 SSIS 向 SignalR 中心客户端发送状态更新消息的最佳方式是什么?
以下 SSIS 任务似乎能够将消息传递到外部系统:
SSIS 消息队列任务:在服务器上使用 MSMQ 专用队列一开始听起来很简单,只是 MSMQ 有点过时、缺乏维护且缺乏文档。也没有一种明显的方法可以与现有的支持 SignalR 的 Web 应用程序集成。有一个write-up about a self-hosted SignalR hub with connections to MSMQ ,但是这种方法可以在 ASP.NET MVC 应用程序中实现吗?
SSIS 执行 SQL 任务:我已经从 SSIS 执行此操作(更新作业表中的 status_id),因此困难的部分是检测这些更改并通过SignalR 集线器。 SignalR already can use SQL Server for scaling out ,但此技术假设所有消息一开始都是通过 SignalR 集线器传入的,但这里的情况并非如此。其他人谈论使用 SqlDependency ,但这是否可以使 ASP.NET 应用程序监视数据库表并收到所有更新通知?
使用 SSIS 脚本任务发送 HTTP 请求 (C#):经过反射(reflection),这似乎是最直接的途径,但有一些注意事项。我正在构建的 Web 应用程序经过 NTLM 身份验证,因此我需要使用 System.Net.WebRequest 进行身份验证,这在 SSIS 中可能会出现问题,也可能不会出现问题。
关于 #3 的更新:SSIS 包正在 SQL Server 中运行。如果我使用 System.Net.CredentialCache.DefaultNetworkCredentials 向站点进行身份验证,则其运行的 Windows 帐户将无法授权。因此,似乎 WebRequest 只能在这种情况下工作,如果可以使用备用 NTLM 凭据(即不是从运行程序包的帐户派生)。该网站不接受基本的 HTTP 身份验证。
更新 2:看起来 System.Net.NetworkCredentials 可以使用任意域/用户/密码实例化并应用于 WebRequest。我还没有在 SSIS 任务的生产中对此进行测试。这个问题仍然悬而未决,因为维护许多相同的 SSIS 脚本任务(或开发可重用的 SSIS 任务)相当麻烦。可能有更简单、更快或更易于维护的解决方案。
关于赏金奖励的更新 3:400 名代表的赏金将授予提出可行策略并至少提供一些基本细节的最佳答案。
最佳答案
SSIS Message Queue Task
如果您使用它,则必须将消息发布到队列(MSMQ 是具有文件数据库的服务)。该消息可以是您想要的任何内容。然后,您必须编写一个 Windows 服务来轮询 MSMQ 队列中的消息(或注册到 MSMQ 事件),并使用 C# 信号器客户端将消息传输到 Web 客户端。
+: MSMQ itself is reliable, MSMQ can post the message to other MSMQ
+: MSMQ will retain messages if they can not be delivered
-: All servers having MSMQ must be in the same Active Directory domain.
-: The service is not easy to write, if an error occurs in it all messages in the queue can be blocked (if the problematic message stays at the top of the queue)
-: It is not so easy to setup the security of MSMQ
-: There is no tool to recover the file db if it crashes.
我的想法是,如果您的消息通过本地网络/VPN 进行长距离传输,并且您的消息必须到达并且永远不会丢失,那么您可以使用 MSMQ。
就您而言,如果消息未到达,这并不是灾难性的......
Execute SQL Task
不要自行更新信号数据库。这不是一个可靠且长期存在的解决方案。
也不要在 SQL 表上使用监视功能(称为 Service Broker)。根据我的经验,它不可靠,它不断断开连接,无缘无故拒绝(重新)连接,而且 C# api 很糟糕。事实上,您只会收到一项更改通知,然后您必须自己查找更改并重新注册更改。
您可以做的是使用包含信号客户端的 CLR 存储过程。但如果你有 sql 2008R2 或更低版本,它必须是 .NET 2.0,signalr 不支持它(我很确定,但应该验证)。引用:http://technet.microsoft.com/en-us/library/ms131103.aspx
Use the SSIS Script task to send an HTTP request (using NTLM)
HTTP 请求是最好的方法。您可以将代码放入 CLR 存储过程中,这样它将可重用,并使用执行 sql 任务。引用:http://technet.microsoft.com/en-us/library/ms190790(v=sql.105).aspx
关于asp.net - 将消息从 SSIS (2012) 包推送到 ASP.NET Web 应用程序中的 SignalR 中心 - 最好的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18523401/
我有一些自定义控制流和数据流任务未显示在 SSIS 工具箱中。当我在 SSDT 中打开包含自定义任务的包时,加载该包时出现几个错误。 加载 MyModuleTemplate1.dtsx 时出错:由于错
我有一个现有的 SSIS 包 (load1),它将数据从一台服务器 (srv1) 加载到我的服务器 (srv2)。在我可以运行 load1 之前,还有 2 个其他负载需要在 srv1 上运行,然后 l
我有点困惑 async方法是否适用于 SSIS 作业。脚本任务项创建一个面向 .NET Framework 4.5 的 Visual Studio 项目,输出类型为类库。 如果我制作主要方法 publ
有没有一种方法可以在 SSIS 执行期间动态创建目标文件夹而不使用脚本任务,例如。我有代码 123、133、143,如果不存在,我想在下面创建一个文件夹位置 D:\Outbox\ACI\123 D:\
我需要执行 29 个 ssis 包。所以计划创建一个主包来执行所有这些包。我不知道如何实现这一点。能否请您简要解释一下。提前致谢 ! 最佳答案 这篇文章很好地概括了主包的功能,它基本上是一个在控制流中
我有一个像这种格式的字符串。就我而言,我只需要从字符串大小写中提取字符 1)12AB 2)SD12 3)1WE4 输出 1)AB 2)SD 3)WE 我只需要提取字符。我在 SSIS 包的派生列中使用
使用: Windows 7 企业版; Visual Studio Pro 2017 (15.3.5);固态硬盘 15.1 无法让数据查看器在我的 SSIS 包上弹出。我确实做了一些 Google-fu
我可以使用什么模式/通配符来分别获取以下两个文件?目前,我正在使用此模式 CRM#ContractsBillingAccount*.csv 但两个文件名都符合此模式。如何避免? CRM#Contrac
是否可以在脚本任务中将发生的异常重定向到另一个表/日志?如果是这样,该怎么做? 最佳答案 您可以在脚本任务中执行在 vb.net 或 C# 中可以执行的任何操作。但是如果你在一个脚本任务中做了这么多,
我使用 CSV 中的以下内容来测试 SCD。我认为它会识别 LocationID 并在必要时更新记录。但它没有。它只插入新记录。 我正在使用带有 Win 身份验证的 Visual Studio 201
我对 SSIS 事务隔离级别的问题很少。 考虑一个场景:我有一个执行 SQL 任务,它在表 A 中插入数据。这个任务指向一个数据流任务,它读取以前插入到 A 上的数据。我已经启动了分布式事务,如果我在
你好 我正在创建一个需要按指定顺序执行以下操作的 ssis 包: 1:处理一些数据 2:将该数据移动到其他一些表 3:获取一些数据并将其推送到纯文本文件中。 我为这些创建了 3 个存储过程,我为 1
使用SQLServer 2012 Enterprise,在“控制流”选项卡中单击鼠标右键时,在SSIS中看不到“程序包配置向导”。我可以看到所有其他项目(日志,数字签名...)。 以下是有关我的安装的
我有一个 Foreach 容器,其中有一个 执行进程任务 。我有很多 Console.WriteLine() 语句。 图像中突出显示的 3 个图像可用于从 .exe 获取输出。 我在包中声明了一个变量
SSIS 非常擅长处理所有记录都相同的平面文件,但当存在一点复杂性时就不太好了。 我想导入一个与此类似的文件 - Customer: 2344 Name: John Smith Item
当我在 SSIS 包 (ProtectionLevel) 上设置权限并输入 PackagePassword 时,当我在计算机上打开包时,它不会提示我输入密码。 我做错了吗? 最佳答案 你可能没有做错什
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我致力于创建 biml。从中生成 ssis 包。构建 SSIS 项目,然后在服务器上部署 ispac 文件。 但是这些所有手动步骤都可以自动化吗? 我可以使用命令行从 biml 生成 ssis 吗?除
我已经创建了一个 SSIS 包。如果包失败,我需要将事务应用于此包以进行回滚。我发现的是一个属性“TransactionOption”,它应该被赋予“Required”。我对吗 ?并且我已将包的 Tr
我在 Visual Studio 2015 中向 SSIS 添加自定义 SSIS 组件时遇到问题。 我的系统是:Windows 8.1 64 位 Visual Studio 社区 2015 版14.0
我是一名优秀的程序员,十分优秀!