问题标签 [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.
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 objects
和C objects
链接到object A
(特定 ID 中的TableA
),我该如何使用SqlTransaction
select 语句将检索的值准确的?
我尝试使用 3 个不同的选择语句(select from A)
,然后(select from B)
,然后(select from C)
,但在这 3 个选择语句中,两个表中的任何一个都可能更改了信息,结果集可能不准确。
TLDR:如何使用c# SqlTransaction
来保证一个select以原子和准确的方式以1:M和M:M关系拉取多个表数据(不让表B和C中的其他同时更新/删除语句影响结果的完整性放)
c# - 其他形式的sql事务回滚
我有 2 个表格:
1.MainForm :
其中要求用户输入姓名,Family,然后有一个名为“付款明细”的按钮(打开 Form2)。
2.Form2
用户输入付款明细,然后单击保存按钮。然后这个事务在 sql 表中插入新行,这个表单将被关闭(步骤 2)。虽然 MainFrom 仍处于打开状态,但我想,在用户单击 MainForm 上的 Save 按钮(步骤 3)时,Form2 的事务已提交,但如果用户关闭主窗体,则 Form2 事务将回滚。
我会很感激你对这种情况的建议?
去扔步骤 1,2,3
c# - SQL 事务包装器处理
我正在尝试将事务处理封装在 C# 代码中。为此,我创建了一个名为 TransactionProvider 的类。
用法:
这里的想法是在'using'语句中实例化这个类并尽快释放到SQL(+完成事务)的连接。经过一番阅读,我仍然不确定如何在这里处理 IDisposable 。TransactionProvider 不直接访问任何非托管资源,因此我认为没有理由实现析构函数。我想剩下的唯一事情就是确保 SQLTransaction 和 SQLConnection 都得到最终确定。上面的代码能完成这项工作吗?它是否确保一旦 TransactionProvider 对象超出范围就会关闭所有连接?
c# - 如何在 C# 中使用 SqlTransaction
我正在使用以下代码一次执行两个命令。我使用 SqlTransaction 来确保所有命令都被执行或回滚。当我在没有“事务”的情况下运行我的程序时,它运行正常;但是当我对他们使用“交易”时,他们会显示错误。
我的代码:
错误:
c# - 在同一张表上使用 SqlTransaction 获取超时错误
我收到错误“超时已过期。在操作完成之前超时时间已过或服务器没有响应”。
CheckSerialNumber 函数还插入到 YSL00(我执行标量的同一个表。请参见上面的代码)。正如我之前提到的,我读取和更新 YSL000 表的平面文件中有 1000 行。
请注意,我有两个单独的 sqlcommands 和两个单独的连接来处理这个问题。原因是 sqltransaction 它不允许我在同一张表上查询。我认为可能会因此而发生超时?
谢谢阅读。请建议
更新 1:由于我没有粘贴整个代码,我想提一下 dispose 是使用程序中的以下代码完成的。
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)
c# - 这个交易对我来说是回滚(ed)吗?
如果我通过尝试创建现有表导致错误,则现有事务似乎已经自行回滚:
我想了解发生了什么以及为什么。我希望事务回滚是我的责任 - 对于其他错误,它不会这样做:例如,如果我只是调用“bingy bongy”,则只有调用引发异常,然后我ROLLBACK
在异常中没有任何问题。
sql-server - 并发访问事件中的 T-SQL 锁定资源
我想在并发访问的情况下锁定某个表。
在存储过程中:
- 我截断了一张表
- 进行计算并填写上表
- 从 PROCEDURE 返回后,从表中进行选择
为了避免并发访问时出现问题,我计划添加一个“BEGIN TRANSACTION”,然后是“BEGIN TRY -END TRY”和“BEGIN CATCH - END CATCH”。我在“CATCH”中的“END-TRY”和“ROLLBACK”之前“提交”。
仅此一项就可以解决所有并发问题还是我需要做更多的事情。
非常感谢, 苏吉特
c# - 使用 SQL 事务插入两个表
如何在前端用 SQL 事务实现两张表插入代码?
我有两张桌子,TblMaster
和TblSub
。如果Tblsub
插入失败,则TblMaster
记录应该回滚。
我ExecuteNonQuery
在 SQL 助手类中有一个用于插入记录的通用函数。
请建议我解决此问题的方法。
sql - Rails控制器动作中意外的sql操作顺序
我们有一个动作,它返回一个用户电子邮件的动态列表,这些电子邮件是每月通讯到期的。该操作采用一个可选mark_as_sent
参数,如果存在,它将更新用户记录以显示他们今天收到了一封电子邮件。
但是即使更新操作是在用户被选中之后mark_as_sent
发生的,当为真时,该操作总是返回一个空列表。
这两个操作不是同一个事务的一部分,所以我不明白为什么第一个似乎在第二个之前生效?