C# 是否存在到SQL Server的最大连接限制
我使用ADO.NET和SQL Server 2008完成了我的桌面应用程序。我计划在10台通过本地网络连接到Windows7计算机上SQL Server数据库的计算机上运行我的应用程序 如果所有计算机同时运行,是否有任何问题 那么SQL Server连接池呢 请注意,当我尝试使用以下命令在SQL Server上查找数据库的活动连接时:C# 是否存在到SQL Server的最大连接限制,c#,sql-server,sql-server-2008,ado.net,database-connection,C#,Sql Server,Sql Server 2008,Ado.net,Database Connection,我使用ADO.NET和SQL Server 2008完成了我的桌面应用程序。我计划在10台通过本地网络连接到Windows7计算机上SQL Server数据库的计算机上运行我的应用程序 如果所有计算机同时运行,是否有任何问题 那么SQL Server连接池呢 请注意,当我尝试使用以下命令在SQL Server上查找数据库的活动连接时: sp_who 我发现超过20个活动连接 这会导致问题吗?对于运行SQL Server的Windows 7: 似乎只允许从其他设备同时连接20个。()但是,根据在
sp_who
我发现超过20个活动连接
这会导致问题吗?对于运行SQL Server的Windows 7: 似乎只允许从其他设备同时连接20个。()但是,根据在这20个设备上运行的应用程序,可能会启动更多连接,这可能会导致您看到的情况 此外,还应确保在必要时正确关闭应用程序中的连接,不要让连接不必要地处于打开状态 对于任何Windows Server操作系统,如果您对同时连接的需求更大,则以下情况适用: 从 设置用户连接
您可以运行
sp\u configure
来获取当前的运行值。如果您只查看10个客户端,SQL Server应该能够处理该问题。
除此之外,这只是一个设计这种负载的问题。例如,您希望确保在正确的时间发生正确的锁定。本质上,让多个并发客户端访问同一个数据库与让多个并发线程在一台机器上访问相同的变量是一样的。这个数据库比一个int
要聪明一点,但是你仍然需要确保你知道事情是如何发生的
例如,假设您有一个表,其中包含要完成的任务
,它有一列表示ID
,一列表示LastCompleted
时间。在单个客户端上,您可能希望编写访问它的内容,如下所示:
LastCompleted
UPDATE
要设置的表LastCompleted=GETDATE()
InProgressAsOf
指示为日期,然后您可以根据需要重试孤立的任务,但您永远不会冒发生重叠的风险。即使这样,您也可能希望在UPDATE
上使用OUTPUT
子句来确保它是原子的
UPDATE
要设置的表LastCompleted=GETDATE()