- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有多个客户端通过不可靠(无线/gprs)网络连接到 SQL Server,并在几分钟内执行大量小型查询和插入。如果在此过程中网络连接中断,则整个事务将回滚并需要重新启动。由于业务需求,流程必须是事务性的(即其他客户端要么看到来自其他客户端的完整数据集,要么根本看不到)。
我希望能够检测到连接何时断开,并能够重新连接到 SQL Server 并在刚刚删除的同一事务中继续处理,并避免从头开始重新启动。目前,我在打开连接后立即使用 sp_getbindtoken
,将 CommandTimeout
设置为较小的值(远小于 TCP KeepAlive),并且如果在 ExecuteNonQuery
期间超时>,我打开与服务器的新连接,并从进程开始时使用 token 调用 sp_bindsession
。然后,我使用新连接继续处理, session 绑定(bind)到前一个处理的事务。
到目前为止,它工作得几乎完美,但根据MSDN ,此 API 已弃用,并将在 SQL Server 的 future 版本中删除。问题是:如果没有这两个命令,我如何才能获得相同的结果?有没有其他方法可以从断开的 TCP 连接中恢复事务?
编辑/更多信息:客户端应用程序在带有条形码扫描仪的 Windows CE 设备上运行。我提供设备和软件,因此我可以自由地将我需要的任何东西放在那里。 DB 由第三方托管在 protected 环境中,我和客户都无法控制它。我总共有约 50MB 的每日销售数据要发送。我可以使用 SP 来保存数据,但仍然需要传输数据,并且使用一个大参数对 SP 进行一次调用,通过 GPRS/EDGE 链路成功的机会接近 0%。
由于整个解决方案在生产环境中运行,我希望将更改保持在最低限度。与 sp_bindsession
具有相同语义的替代 API 将是完美的。
最佳答案
我只是不认为单笔交易需要约 50MB 的每日销售数据。我认为单个销售交易需要包装在 sql 交易中,但每个交易大约 1K。您确定不能在服务器上的存储过程中运行多个小事务吗?如果每个设备必须全部或全无,则通过小事务将设备加载到临时表。当设备完成后,然后在事务中使用服务器上的存储过程来刷新暂存表。或者只是在上传完成时放置一个 bool 列,然后在上传完成时在一次更新中翻转该标志。 50MB 的事务确实会破坏事务日志并锁定其他更新。
关于.net - IP 更改后重新连接已删除的 SqlConnection,而不回滚事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8467729/
使用 DataSnap 2009,我似乎可以在客户端数据模块中使用远程数据库连接,使用 TDSProviderConection 和关联的 TSQLConnection。客户端很容易设置,我在表单上放
我很好奇为什么会这样。我今天早些时候遇到了这种情况 using (SqlConnection oConn = new SqlConnection(ConnectionString)) { us
我正在用 .Net Reflector 检查 SqlConnection . 我注意到有一个私有(private)构造函数,有趣的是它接受一个 SqlConnection 类作为参数。 我想知道的主要
我的问题:本周早些时候,我接到了加速我们程序中的任务的任务。我看着它,立即想到了在该任务中为函数使用并行 foreach 循环的想法。 我实现了它,通过了函数(包括所有子函数)并更改了 SqlConn
我想执行一个 SELECT 查询,然后执行一系列 UPDATE 查询(都在同一个表上); UPDATE 在重复调用的单独方法中实现。如果其中一个 UPDATE 查询失败,我希望它们全部失败/回滚 -
做什么 using (SqlConnection cn = new SqlConnection(connectionString)) 做吗? 最佳答案 new SqlConnection(connec
您好,我想问一下,创建 Singleton 以仅与 db 建立一个事件连接是否是个好主意。我想做的是: 1) 我有 wcf 服务 2)wcf服务从db获取数据 3)我想创建一个这样的单例,只有一个连接
尊敬的专业人士请帮我解决以下问题。在我的 .NET C# 应用程序中,有以下代码: SqlConnection connection = new SqlConnection( SQLCONNECTIO
我正在尝试更新一些代码。我有一个以此开头的 vb 文件... Imports System.Data.SqlClient Imports System.Data.Sql Imports System.
如果我打开一个到 SQL Server 的 SqlConnection,然后从多个后台线程发出多个查询,所有查询都使用该一个连接 - 这些查询是否会按顺序执行(不关心顺序) )? 具体来说,如果在一个
我们有一个使用 SQL Server 2008 R2 数据库的应用程序。在应用程序中,使用 SqlConnection 对象调用数据库。 此SqlConnection 对象在第一次访问时初始化一次,然
我正在尝试优化访问 SQL Server 2014 数据库的代码性能,并注意到连接池似乎并不像 ADO.NET 所宣传的那样工作。默认情况下,它应该被启用并且开箱即用(只要使用相同的连接字符串)。然而
我正在尝试使用 SqlConnection 和 SqlCommand 对象建立一个简单的 MS Access 数据库连接。 正如您在此处看到的,我是如何建立联系的: private SqlConnec
我有一个连接到数据库的 .NET 应用程序。 在我的 web.config 文件中有 用户名和密码已删除。 在我后面的代码中,我这样打开连接 protected void grabDat
SqlDataReader rdr = null; con = new SqlConnection(objUtilityDAL.ConnectionString); using (SqlCommand
public class db { public static string connectionString = WebConfigurationManager.Con
我需要你的帮助(眼睛)看看我哪里错了。 所以,我遇到了这个错误... 这是我正在做的... 一个登录用户,有一个角色,这个角色有或没有一些权限。 当他输入表单时,应用程序会根据他的角色检查用户权限。在
我不确定嵌套的 SqlConnections 是否可行,但我真的很想远离它。我现在在我的代码中遇到了一个范围问题,我正试图弄清楚如何解决它。 所以直到最近我还有一个全局 SqlConnection,它
我编写了以下代码(为简洁起见进行了删减): using (SqlConnection cn = new SqlConnection("Server=test;Database=test;User=te
我在另一台服务器上读取和写入数据到 Sql Server,因此我需要打开许多 SqlConnection,我在读取或写入完成后关闭它们,但有时我无法连接到服务器但是在我重新启动服务器后一切正常,我猜这
我是一名优秀的程序员,十分优秀!