微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

访问SQL Server 2019时偶尔出现随机C#崩溃

如何解决访问SQL Server 2019时偶尔出现随机C#崩溃

我有一个从未在sql Server 2012上出现过问题的应用程序,但是现在尝试在启动时访问sql Server 2019时偶尔会崩溃。

这是事件日志:

Application: MyApplication.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.ComponentModel.Win32Exception

Exception Info: System.Data.sqlClient.sqlException
   at System.Data.sqlClient.sqlInternalConnectionTds..ctor(System.Data.ProviderBase.DbConnectionPoolIdentity,System.Data.sqlClient.sqlConnectionString,System.Data.sqlClient.sqlCredential,System.Object,System.String,System.Security.securestring,Boolean,System.Data.sqlClient.SessionData,System.Data.ProviderBase.DbConnectionPool,Boolean)
   at System.Data.sqlClient.sqlConnectionFactory.CreateConnection(System.Data.Common.DbConnectionoptions,System.Data.Common.DbConnectionPoolKey,System.Data.Common.DbConnection,System.Data.Common.DbConnectionoptions)
   at System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(System.Data.ProviderBase.DbConnectionPool,System.Data.Common.DbConnectionoptions,System.Data.Common.DbConnectionoptions)
   at System.Data.ProviderBase.DbConnectionPool.CreateObject(System.Data.Common.DbConnection,System.Data.ProviderBase.DbConnectionInternal)
   at System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(System.Data.Common.DbConnection,System.Data.ProviderBase.DbConnectionInternal)
   at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(System.Data.Common.DbConnection,UInt32,System.Data.ProviderBase.DbConnectionInternal ByRef)
   at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(System.Data.Common.DbConnection,System.Threading.Tasks.taskcompletionsource`1<System.Data.ProviderBase.DbConnectionInternal>,System.Data.ProviderBase.DbConnectionInternal ByRef)
   at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(System.Data.Common.DbConnection,System.Data.ProviderBase.DbConnectionInternal,System.Data.ProviderBase.DbConnectionInternal ByRef)
   at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(System.Data.Common.DbConnection,System.Data.ProviderBase.DbConnectionFactory,System.Data.Common.DbConnectionoptions)
   at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(System.Data.Common.DbConnection,System.Data.Common.DbConnectionoptions)
   at System.Data.sqlClient.sqlConnection.TryOpenInner(System.Threading.Tasks.taskcompletionsource`1<System.Data.ProviderBase.DbConnectionInternal>)
   at System.Data.sqlClient.sqlConnection.TryOpen(System.Threading.Tasks.taskcompletionsource`1<System.Data.ProviderBase.DbConnectionInternal>)
   at System.Data.sqlClient.sqlConnection.open()
   at System.Data.Common.DbDataAdapter.FillInternal(System.Data.DataSet,System.Data.DataTable[],Int32,System.Data.IDbCommand,System.Data.CommandBehavior)
   at System.Data.Common.DbDataAdapter.Fill(System.Data.DataTable[],System.Data.CommandBehavior)
   at System.Data.Common.DbDataAdapter.Fill(System.Data.DataTable)
   at MyApplication.Program.MyDatabaseMethod(System.String)
   at MyApplication.Program.Main(System.String[])

这是它崩溃的方法

public static string MyDatabaseMethod()
{
    DataTable dt = new DataTable();

    string query = "SELECT TOP 1 col1 FROM mydatabase.dbo.mytable";
    sqlDataAdapter da = new sqlDataAdapter(query,myConnectionString);

    da.Fill(dt);

    string data = dt.Rows[0].Field<string>("col1");
    return data;
}

这90%的时间有效,但是偶尔的崩溃变得成问题。错误看起来像超时吗?该数据库非常繁忙,并且每晚晚上同时连接该应用程序的多个实例(〜20个),因此我想知道一次登录数量是否存在并发问题。查询本身正在访问的表不超过30行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。