问题标签 [sqltransaction]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
159 浏览

c# - MS SQL - 以原子方式读取 C# 中的多个表

想象一下,有一个用 编写的程序,C#其中有一个object (A)引用 2 组的objects ( set of B, set of C).

这些对象MS SQL作为行存储在TableA, TableB,TableC

在哪里

(因此,单个对象 A = 1 中的行TableA,它可以链接到TableB和中的多行TableC

我想问的问题是,如果我想用来C#选择当前B objectsC objects链接到object A(特定 ID 中的TableA),我该如何使用SqlTransactionselect 语句将检索的值准确的?

我尝试使用 3 个不同的选择语句(select from A),然后(select from B),然后(select from C),但在这 3 个选择语句中,两个表中的任何一个都可能更改了信息,结果集可能不准确。

TLDR:如何使用c# SqlTransaction来保证一个select以原子和准确的方式以1:M和M:M关系拉取多个表数据(不让表B和C中的其他同时更新/删除语句影响结果的完整性放)

0 投票
2 回答
406 浏览

c# - 其他形式的sql事务回滚

我有 2 个表格: 在此处输入图像描述 1.MainForm :

其中要求用户输入姓名,Family,然后有一个名为“付款明细”的按钮(打开 Form2)。

2.Form2

用户输入付款明细,然后单击保存按钮。然后这个事务在 sql 表中插入新行,这个表单将被关闭(步骤 2)。虽然 MainFrom 仍处于打开状态,但我想,在用户单击 MainForm 上的 Save 按钮(步骤 3)时,Form2 的事务已提交,但如果用户关闭主窗体,则 Form2 事务将回滚。

我会很感激你对这种情况的建议?

去扔步骤 1,2,3

0 投票
0 回答
533 浏览

c# - SQL 事务包装器处理

我正在尝试将事务处理封装在 C# 代码中。为此,我创建了一个名为 TransactionProvider 的类。

用法:

这里的想法是在'using'语句中实例化这个类并尽快释放到SQL(+完成事务)的连接。经过一番阅读,我仍然不确定如何在这里处理 IDisposable 。TransactionProvider 不直接访问任何非托管资源,因此我认为没有理由实现析构函数。我想剩下的唯一事情就是确保 SQLTransaction 和 SQLConnection 都得到最终确定。上面的代码能完成这项工作吗?它是否确保一旦 TransactionProvider 对象超出范围就会关闭所有连接?

0 投票
6 回答
118388 浏览

c# - 如何在 C# 中使用 SqlTransaction

我正在使用以下代码一次执行两个命令。我使用 SqlTransaction 来确保所有命令都被执行或回滚。当我在没有“事务”的情况下运行我的程序时,它运行正常;但是当我对他们使用“交易”时,他们会显示错误。

我的代码:

错误:

在此处输入图像描述

0 投票
4 回答
3761 浏览

c# - 在同一张表上使用 SqlTransaction 获取超时错误

我收到错误“超时已过期。在操作完成之前超时时间已过或服务器没有响应”。

CheckSerialNumber 函数还插入到 YSL00(我执行标量的同一个表。请参见上面的代码)。正如我之前提到的,我读取和更新 YSL000 表的平面文件中有 1000 行。

请注意,我有两个单独的 sqlcommands 和两个单独的连接来处理这个问题。原因是 sqltransaction 它不允许我在同一张表上查询。我认为可能会因此而发生超时?

谢谢阅读。请建议

更新 1:由于我没有粘贴整个代码,我想提一下 dispose 是使用程序中的以下代码完成的。

0 投票
2 回答
262 浏览

c# - c#程序:使用大量INSERT语句的SQLTransaction命令出错

更新 1:以下代码在我的 DEV 机器上运行良好,但在测试/生产服务器上失败。

}

我在上面的代码中遇到的问题:

我正在使用带有提交和回滚的 SQLTransaction。我遍历一个平面文件并更新一些表。文件通常包含大约 500 到 1000 行。我正在为每一行(使用 sqltransaction)创建 INSERT 语句,并且程序在 COMMIT 语句处暂停很长时间,最终我得到如下所示的错误。但是,如果我注释掉整个 sqltransaction(以及提交和回滚),一切都很好,但我们需要提交和回滚。有没有办法只创建一个事务(我现在正在为每个 INSERT 语句创建),这样我就不会收到如下错误。

从管道读取错误:管道已结束。(109, 0x6d)。mscorlib

服务器堆栈跟踪:在 System.ServiceModel.Channels.SessionConnectionReader.Receive(TimeSpan 超时)在 System.ServiceModel.Channels 的 System.ServiceModel.Channels.StreamConnection.Read(Byte[] 缓冲区,Int32 偏移量,Int32 大小,TimeSpan 超时)。 SynchronizedMessageSource.Receive(TimeSpan timeout) at System.ServiceModel.Channels.FramingDuplexSessionChannel.Receive(TimeSpan timeout) at System.ServiceModel.Channels.FramingDuplexSessionChannel.TryReceive(TimeSpan timeout, Message& message) at System.ServiceModel.Dispatcher.DuplexChannelBinder.Request(Message消息,TimeSpan 超时)在 System.ServiceModel.Channels.ServiceChannel.Call(字符串操作,布尔单向,ProxyOperationRuntime 操作,Object[] 输入,Object[] 输出,TimeSpan 超时)在 System.ServiceModel.Channels.ServiceChannel.Call(String行动,Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs) at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

在 [0] 处重新引发异常:在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 类型) 处的 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)

0 投票
2 回答
1555 浏览

c# - 这个交易对我来说是回滚(ed)吗?

如果我通过尝试创建现有表导致错误,则现有事务似乎已经自行回滚:

我想了解发生了什么以及为什么。我希望事务回滚是我的责任 - 对于其他错误,它不会这样做:例如,如果我只是调用“bingy bongy”,则只有调用引发异常,然后我ROLLBACK在异常中没有任何问题。

0 投票
1 回答
198 浏览

sql-server - 并发访问事件中的 T-SQL 锁定资源

我想在并发访问的情况下锁定某个表。

在存储过程中:

  • 我截断了一张表
  • 进行计算并填写上表
  • 从 PROCEDURE 返回后,从表中进行选择

为了避免并发访问时出现问题,我计划添加一个“BEGIN TRANSACTION”,然后是“BEGIN TRY -END TRY”和“BEGIN CATCH - END CATCH”。我在“CATCH”中的“END-TRY”和“ROLLBACK”之前“提交”。

仅此一项就可以解决所有并发问题还是我需要做更多的事情。

非常感谢, 苏吉特

0 投票
3 回答
2561 浏览

c# - 使用 SQL 事务插入两个表

如何在前端用 SQL 事务实现两张表插入代码?

我有两张桌子,TblMasterTblSub。如果Tblsub插入失败,则TblMaster记录应该回滚。

ExecuteNonQuery在 SQL 助手类中有一个用于插入记录的通用函数。

请建议我解决此问题的方法。

0 投票
1 回答
53 浏览

sql - Rails控制器动作中意外的sql操作顺序

我们有一个动作,它返回一个用户电子邮件的动态列表,这些电子邮件是每月通讯到期的。该操作采用一个可选mark_as_sent参数,如果存在,它将更新用户记录以显示他们今天收到了一封电子邮件。

但是即使更新操作是在用户被选中之后mark_as_sent发生的,当为真时,该操作总是返回一个空列表。

这两个操作不是同一个事务的一部分,所以我不明白为什么第一个似乎在第二个之前生效?