我的网络服务器的数据库连接工作正常,但是当我有一个写入大量的Windows服务触发器时,我将随机获取“与SQL Server建立连接时出现与网络相关或特定于实例的错误。”错误40 “。来自我的网络服务器。
我尝试为我的网络服务器关闭连接池,因为它们与Windows服务共享相同的连接字符串,但我仍然不知道是什么导致了这一点。
我的SqlConnection对象也包含在using语句中,因此它们正在处理中。
目前正在使用Dapper进行查询扩展方法。
连接字符串示例:“Data Source = SERVER; initial catalog = DBNAME; user id = USERNAME; password = PASSWORD; Pooling = False;”
using (IDbConnection connection = new SqlConnection(_connectionString))
{
return connection.Query<TotalPosts>("analytics.TotalPosts_Sel", new { AccountId = accountId }, commandType: CommandType.StoredProcedure).FirstOrDefault();
}
答案 0 :(得分:0)
请按照以下步骤操作:
1-确保您的SQL Server服务已启动。
2-确保在SQL Server配置管理器中启用了TCP / IP,右键单击“ TCP-IP”,转到“属性”,并确保默认端口设置为1433。
3-打开Windows防火墙。点击“更改设置”链接。显示新的弹出窗口时,单击“添加端口”按钮。添加1433作为SQL的TCP端口:
4-在SSMS中连接到SQL连接,右键单击并转到“属性”。然后,确保选中“允许远程连接”复选框。
答案 1 :(得分:0)
好的,我知道这个问题已有好几年了,但是当我在2019年使用.NET 4.8遇到相同的问题时,我将发布该问题以及解决方法。
您的问题是由您创建和关闭连接的速度以及保持打开状态的连接数引起的。您正在导致底层数据库驱动程序/库的瓶颈。
一些有用的信息来了解该问题:
使用连接池也会带来其他问题:
http://florianreischl.blogspot.com/2011/08/adonet-connection-pooling-internals-and.html
我的解决方法是将线程休眠20毫秒。每次迭代之后。肮脏,但是有用。
此致
MarianoC。