问题标签 [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.
perl - 仅在内存中修改 SQLite 数据库
我将 perl与外部提供的 sqlite 数据库一起使用,为静态服务的网站预先生成大约 9k 页面。
我对原始数据进行了一些算法改进,但为了保持一致性,我认为如果我的脚本不理会原始数据库并仅修改内存中的数据(如果需要,甚至整个数据库也应该适合RAM 没有任何问题),在生成网页之前。
我该怎么做呢?
我闻到我可以从这里的某种 SQL 事务功能中受益(在我的脚本完成后应该放弃它),对吗?考虑到要保持原始数据库文件不被修改,这听起来是个好主意吗?(例如,当使用 Perl 中的 SQLite 时,来自正在进行的事务的数据存储在哪里以及如何存储?)还有其他方式来完成我需要的吗?(我是 perl 和 sql 新手——寻找带注释的代码示例。)
我想作为最后的手段,我总是可以在文件系统中复制数据库文件,但这似乎是一个丑陋且低效的解决方案。
foreign-keys - 具有多个表的 SQL 事务
- 我有三个表,DISTRIBUTION_LIST、USERS 和 ADDRESSES。
- 单个对象“distribution_list”有多个用户和地址。
- 我想创建一个事务,它将一起写入这三个表,表 USERS 和 ADDRESSES 中的 FOREIGN_KEY 是来自 DISTRIBUTION_LIST 的 PRIMARY_KEY,它是 AUTO INCREMENT。
实际上我已经描述了我的问题,当我创建语句以将数据插入用户和地址时,如何从 DISTRIBUTION_LIST 中知道 PRIMARY_KEY?一种手动计算 PRIMARY_KEY 的解决方案,但可能有更优雅的解决方案来完成这项任务?
c# - sqltransaction 上的 BeginTransaction() 冻结,如何使用 try catch 解决?
我SqlTransaction transaction = connection.BeginTransaction()
在我的 C# 应用程序中使用从 SQLServer 获取数据。
当没有连接到服务器(没有互联网连接)时我遇到的问题,然后我的应用程序只是冻结并停止工作,没有异常,没有错误,只是冻结。
我尝试使用try catch
捕获错误,但即使这样应用程序也只是冻结,唯一的选择是终止应用程序。谁能帮我抓住这个错误而不是冻结给我错误 - 比如Connection to server failed. Please check internet connection.
这是我的连接类代码:
问题在于:
提前致谢。
PS 应用程序工作得很好,到目前为止唯一的问题是与互联网的连接丢失。我没能找到解决办法...
c# - 使用 C# 的 SQL 事务
我有 C# windows application.When 'Button 1' click in 'Form 1' 我有一个将数据写入几个表的过程。该过程通常需要 10 分钟。当一个用户单击该“按钮 1”时,另一个使用相同数据库和程序的用户单击另一种形式的另一个按钮,该按钮将数据插入到相同的表中。
单击按钮 1 时,我将启动 SQL 事务并在完成该过程后提交该事务。
问题是在运行该进程时,第二个用户出现超时错误并且他无法完成他的进程。
我能为此做些什么?SQL 事务启动时是否会锁定用于该进程的表?
c# - SQLTransaction Multiadd 响应重定向不起作用
我正在使用事务来添加不同的数据库表。当我添加Response.redirect("");
我得到错误:SQLTransaction complete; is no longer available.
如果我删除response.redirect,它工作正常,没有错误。
c# - 在连接之间共享事务
我有一个 FileShare 爬虫(获取权限并将它们放在某个地方以供以后审核)。目前它正在启动多个线程来爬取同一个文件夹(以加快进程)。
在 C# 中,每个SqlConnection
对象都有自己的SqlTransaction
,由SqlConnection.BeginTransaction()
调用发起。
这是当前解决方案的伪代码:
- 获取文件夹列表
- 对于每个文件夹,获取子文件夹列表
- 为每个子文件夹启动一个线程来收集文件共享
- 每个线程将收集到的数据保存到数据库
- 在数据库上运行审计报告
当其中一个子文件夹线程失败时,就会出现问题。我们最终会扫描“无法轻易检测到”的部分文件夹。主要原因是每个线程都在单独的连接上运行。
我想让每个文件夹在同一个事务中提交,而不是扫描不完整(当前情况,当某些线程失败时)。没有实现交易概念,但我正在评估选项。
根据这个答案的评论,生产者/消费者队列将是一个选项,但不幸的是内存是一个限制(由于启动线程的数量)。如果生产者/消费者空间被提交到磁盘以克服 RAM 限制,则执行时间将增加(由于磁盘 I/O 与内存 I/O 相比非常有限)。我想我被记忆/时间妥协所困扰。还有其他建议吗?
c# - 为什么使用 C# 的 ado.net SqlTransaction 很快?
我正在开发一个 asp.net Web 应用程序项目。
我尝试了使用 SqlTransaction 和没有 SqlTransaction 的相同操作。使用 SqlTransaction 的代码的执行时间比不使用 SqlTransaction 的要快。
我想知道它背后的原因,请让我知道 SqlTransaction 是如何影响性能的。
两个代码都使用和使用 SqlTransaction 执行相同的操作。
c# - SQLTransaction 在 C# 中不起作用
我在一个函数中打开了事务,这个函数调用存储过程,它更新 SqlDataTable 中的数据。在我从这个函数返回后没有回滚或提交并调用其他函数,它必须从同一个 DataTable 返回数据。之后我必须调用第一个函数提交或回滚事务。但我的第二个功能不起作用。你能帮帮我吗?
c# - 如何等待 SqlTransaction 提交而不是抛出 SqlException
我正在尝试开发库存管理的应用程序,目前我正在尝试通过交易来添加/删除项目的概念证明。该站点将托管在 Windows Azure 上,因此我必须使用 SqlTransation 来执行事务(无 DTC)。
这是我的 POC 库代码:
我用来测试系统的代码:
例外:
你能帮我找出问题吗?
c# - SQL Server Broker 事务因中毒消息异常而完成
我在 C# 应用程序中使用 2008 R2 中的 SQL Server Broker,并尝试处理 SQL Server 检测到有害消息并禁用目标队列的情况。
发生这种情况时,当我尝试接收消息时会引发 SqlException。那时,我正在使用的 SqlTransaction 似乎不再是可提交的。
我将使用本教程与我的 C# 代码一起演示。
首先使用教程中的 T-SQL 代码创建必要的服务代理对象并发送消息,使其位于目标队列中。
接下来运行这个 C# 代码,它是一个控制台应用程序。
上面的代码只是行为的演示。当然,您通常不会像这样接收和调用 Rollback。
Receive 方法接收消息并在事务上调用 Rollback 以激发毒消息行为。在第六次调用 Receive 时抛出 SQLException,因为队列按预期禁用。
在这一点上,我想重新启用队列,关闭有害消息并结束对话(不需要结束)。这一切都有效,但随后我提交了事务,因为我真的希望将有毒消息从队列中删除。
结果 Commit 调用引发异常,说明
此 SqlTransaction 已完成;它不再可用。
在第 6 次调用 Receive 时没有调用 Rollback 或 Commit,这个事务是如何完成的?
另外,TargetQueue1DB 中的消息是如何被删除的?我认为接收不会将消息从队列中删除,除非它位于已提交的事务中。但是,如果您在调用该提交之前查看 TargetQueue1DB,则队列为空。
如果您稍微修改代码,以便在捕获 SqlException 时 waitCommand 在范围内,您将看到 waitCommand 实例的 Connection 和 Transaction 属性已设置为 null。这对我来说是奇怪的行为。