相关疑难解决方法(0)

连续连接数据库时出错

当我在连续循环中从数据库查询时,一段时间后我收到一个错误:

引发的异常可能是由于瞬态故障引起的.如果要连接到SQL Azure数据库,请考虑使用SqlAzureExecutionStrategy.

通常它工作正常.

c# sql azure azure-sql-database

37
推荐指数
6
解决办法
4万
查看次数

SqlTransaction已经完成

我有一个应用程序可能会对SQL Server 2005数据库进行数千次插入.如果插入因任何原因(外键约束,字段长度等)而失败,则应用程序将记录插入错误并继续.

每个插入都独立于其他插入,因此数据库完整性不需要事务.但是,我们希望使用它们来提高性能.当我使用事务时,我们将在每100次提交中大约有1次出现以下错误.

This SqlTransaction has completed; it is no longer usable.
   at System.Data.SqlClient.SqlTransaction.ZombieCheck()
   at System.Data.SqlClient.SqlTransaction.Commit()
Run Code Online (Sandbox Code Playgroud)

为了尝试追踪原因,我在每个事务操作中都放置了trace语句,这样我就可以确保在调用commit之前没有关闭事务.我已经确认我的应用程序不会关闭交易.然后我使用完全相同的输入数据再次运行应用程序并成功.

如果我关闭日志,它会再次失败.把它重新打开,然后成功.这个开/关切换是通过app.config完成的,无需重新编译.

显然,记录行为会改变时间并使其起作用.这表明存在线程问题.但是,我的应用程序不是多线程的.

我已经看到一个MS KB条目表明.Net 2.0框架的错误可能会导致类似的问题(http://support.microsoft.com/kb/912732).但是,他们提供的修复程序无法解决此问题.

.net sql-server transactions sql-server-2005

24
推荐指数
3
解决办法
3万
查看次数

SQLTransaction已完成错误

我在申请中遇到了一次错误.

这个SQLTransaction已经完成; 它不再可用

堆栈跟踪附在下面 - 它说Zombie CheckRollback.

代码中的错误是什么?

注意:此错误只出现一次.

UPDATE

MSDN - SqlTransaction.Rollback方法

如果连接终止或者事务已在服务器上回滚,则Rollback会生成InvalidOperationException.

僵尸检查交易 - 错误

我在各种应用程序中看到此错误的最常见原因之一是,在我们的应用程序中共享 SqlConnection.

public int SaveUserLogOnInfo(int empID)
{
        int? sessionID = null;
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            SqlTransaction transaction = null;
            try
            {
                transaction = connection.BeginTransaction();
                sessionID = GetSessionIDForAssociate(connection, empID, transaction);

                    //Other Code

                //Commit
                transaction.Commit();
            }
            catch
            {
                //Rollback
                if (transaction != null)
                {
                    transaction.Rollback();
                    transaction.Dispose();
                    transaction = null;
                }

                //Throw exception
                throw; …
Run Code Online (Sandbox Code Playgroud)

.net c# ado.net transactionscope

12
推荐指数
2
解决办法
2万
查看次数