Sql server 如何确定我';在提交事务之前,您是否已读取所有SQL输出?
我有一个表,从中我一直想要所有的数据(它是一个由另一个程序填充的缓冲区)。我还希望在阅读完该数据后将其从表中删除。所以我有点像Sql server 如何确定我';在提交事务之前,您是否已读取所有SQL输出?,sql-server,vb.net,tsql,Sql Server,Vb.net,Tsql,我有一个表,从中我一直想要所有的数据(它是一个由另一个程序填充的缓冲区)。我还希望在阅读完该数据后将其从表中删除。所以我有点像 BEGIN TRANS T1; DELETE FROM table_name OUTPUT DELETED.*; COMMIT TRANS T1; 在reader程序中,我使用一个DataReader循环遍历每一行。我担心的是,如果在读取这些数据时出现问题怎么办?比如说,线程崩溃了,我只读取了部分数据。如果这是一个事务,它在什么时候提交?我什么时候开始读?我宁愿暂时不
BEGIN TRANS T1;
DELETE FROM table_name OUTPUT DELETED.*;
COMMIT TRANS T1;
在reader程序中,我使用一个DataReader循环遍历每一行。我担心的是,如果在读取这些数据时出现问题怎么办?比如说,线程崩溃了,我只读取了部分数据。如果这是一个事务,它在什么时候提交?我什么时候开始读?我宁愿暂时不要锁定这个表,因为有另一个程序总是试图写入它
有没有更好的办法?我有一个程序,它不断地把一条又一条记录写到这个表中,我想让这个程序进入并获取它。我一把抓住它,这样我就可以使用DELETE-OUTPUT-DELETED,而不是一系列更昂贵的“DELETE-where”子句。我更希望作者和读者都能不间断地进行写作。这种方法无法确定 我建议这样做
用这种方法无法确定 我建议这样做
使数据读取器崩溃并查看 您可以使用MSMQ而不是SQL吗 选项A-霍根-好答案 选项B
它有主键吗?
删除内容的成本真的太高了吗?
它不再需要交易 选项C
将X(如1000)的块(顶部)读入.NET集合,而不是另一个表。
删除(..)中的where ID使数据读取器崩溃,请参阅 您可以使用MSMQ而不是SQL吗 选项A-霍根-好答案 选项B
它有主键吗?
删除内容的成本真的太高了吗?
它不再需要交易 选项C
将X(如1000)的块(顶部)读入.NET集合,而不是另一个表。 删除(..)中的where ID