Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql SSIS大容量同时插入到单个表中_Sql_Sql Server 2008_Ssis - Fatal编程技术网

Sql SSIS大容量同时插入到单个表中

Sql SSIS大容量同时插入到单个表中,sql,sql-server-2008,ssis,Sql,Sql Server 2008,Ssis,我有一个SSIS包,它的任务是加载进程外应用程序,将数据批量插入到一个表中。问题在于,当多个文件同时到达时,多个进程外应用程序将运行。这将导致插入失败 SQL Server Broker服务能否将插入的数据排入队列?SQL Server或SSI是否有任何机制来处理并发可靠插入 我使用SSIS的执行进程任务来执行批量插入LINQ到SQL控制台应用程序 谢谢。听起来您遇到了超时问题,因为SSIS包的第一次运行正在锁定表,而包的所有其他运行副本都在等待释放锁 你可以做一些事情来证实这一点。首先,在SQ

我有一个SSIS包,它的任务是加载进程外应用程序,将数据批量插入到一个表中。问题在于,当多个文件同时到达时,多个进程外应用程序将运行。这将导致插入失败

SQL Server Broker服务能否将插入的数据排入队列?SQL Server或SSI是否有任何机制来处理并发可靠插入

我使用SSIS的执行进程任务来执行批量插入LINQ到SQL控制台应用程序


谢谢。

听起来您遇到了超时问题,因为SSIS包的第一次运行正在锁定表,而包的所有其他运行副本都在等待释放锁

你可以做一些事情来证实这一点。首先,在SQL Server Management Studio(SSMS)中,打开一个查询窗口,在出现这种情况时执行命令
EXEC sp_who2
。您将在结果中看到一个BlkBy列。该列包含阻止所选进程的SPID值。您可能会看到包的一个实例正在阻止所有其他包

在SSIS设计器的数据流任务中,编辑目标组件。有一个表锁复选框。它可能被选中,这会告诉进程锁定表,直到数据加载完成

你有几个选择来解决这个问题。首先,一个SSIS包必须在另一个SSIS包启动之前完成加载数据,这是否重要?如果答案为否,则可以取消选中目标组件中的表锁选项。这将允许SQL Server管理同时加载的数据

如果必须先让一个包完成,然后才能运行其他包,则可能需要创建一个SSIS任务来检查表是否可用于加载。如果正在加载该表,请停止SSIS包并稍后重新检查。您甚至可以在控制台应用程序中处理此问题


SQL Server没有任何内置的方法来执行此操作,而且代理服务听起来比您需要的工作量要多。

您看到的“插入失败”是什么。默认情况下,SQL Server将通过使用锁来处理同步插入过程。谢谢!我得到的错误是“超时已过期。操作完成前超时时间已过,或者服务器未响应。”我使用SSIS的执行进程任务执行大容量插入LINQ到SQL控制台应用程序。SSIS任务的超时设置为0。它应该意味着无限期。转储多个文件将导致多个错误。无法插入单个文件。当表被进程锁定时,SQL server似乎不会将其余的插入尝试排队?实际上,这一切都失败了。我想我现在明白了。顺便说一下,如果在堆栈溢出名称前面加上“@”,用户将收到有关注释的通知。@bobs-谢谢!下次我会这么做。你为什么要使用控制台应用程序来插入数据?如果您只是简单地使用SSI插入数据,似乎可以解决很多问题并拥有更多的控制权