Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/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 server 2005 在SQL Server中是否会交叉应用bail而不是错误?_Sql Server 2005 - Fatal编程技术网

Sql server 2005 在SQL Server中是否会交叉应用bail而不是错误?

Sql server 2005 在SQL Server中是否会交叉应用bail而不是错误?,sql-server-2005,Sql Server 2005,我们正在将数百万条记录插入一个详细信息表,其数据以CSV类型的格式存储在主表中。为了进行插入,我们使用了一个交叉应用函数,如果我一个接一个地进行插入,这似乎是可行的,但是如果我进行整个插入,只有大约2/3的记录进入,查询就会停止,大约3个半小时后成功 这里是insert查询 INSERT INTO DetailsTable(MasterTableID, DetailColumn1, DetailColumn2) SELECT MasterTableID, DetailColumn1

我们正在将数百万条记录插入一个详细信息表,其数据以CSV类型的格式存储在主表中。为了进行插入,我们使用了一个交叉应用函数,如果我一个接一个地进行插入,这似乎是可行的,但是如果我进行整个插入,只有大约2/3的记录进入,查询就会停止,大约3个半小时后成功

这里是insert查询

   INSERT INTO DetailsTable(MasterTableID, DetailColumn1, DetailColumn2) 
   SELECT MasterTableID, DetailColumn1, DetailColumn2 FROM MasterTable
   CROSS APPLY [fn_CreateDetailData](MasterTableID, '§') 
如果我对其中一条未插入的记录执行以下操作,则所有操作都将正常工作,并且插入的记录也很正常

   INSERT INTO DetailsTable(MasterTableID, DetailColumn1, DetailColumn2) 
   SELECT MasterTableID, DetailColumn1, DetailColumn2 FROM MasterTable
   CROSS APPLY [fn_CreateDetailData](MasterTableID, '§') 
   WHERE MasterTableID = 12345

从我对SQL Server的所有了解来看,一个事务中存在一个insert语句,因此要么全部存在,要么什么都不存在,但这里的情况似乎不是这样。

对于SELECT,这是您的代码吗?你有没有写过任何细节,比如说,使用NOLOCK提示?NOLOCK因在数据中造成错误间隔而臭名昭著,请参见

发生这种情况的唯一原因是您的函数过滤掉了其他行。向我们展示您的函数。当我没有指定主键id时,我的函数如何筛选出行,而当我指定主键id时如何不筛选出行?不幸的是,这似乎是一个StackOverflow无法处理的问题。问题是,如果我只运行函数更多次,就会插入越来越多的新的唯一行,这看起来很奇怪。好吧,这不完全是我的代码,因为我们没有真正的MasterTable表。但是除了重命名列和表之外,这正是我所运行的。