C# 是否存在到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个。()但是,根据在

我使用ADO.NET和SQL Server 2008完成了我的桌面应用程序。我计划在10台通过本地网络连接到Windows7计算机上SQL Server数据库的计算机上运行我的应用程序

如果所有计算机同时运行,是否有任何问题

那么SQL Server连接池呢

请注意,当我尝试使用以下命令在SQL Server上查找数据库的活动连接时:

sp_who
我发现超过20个活动连接


这会导致问题吗?

对于运行SQL Server的Windows 7:

似乎只允许从其他设备同时连接20个。()但是,根据在这20个设备上运行的应用程序,可能会启动更多连接,这可能会导致您看到的情况

此外,还应确保在必要时正确关闭应用程序中的连接,不要让连接不必要地处于打开状态

对于任何Windows Server操作系统,如果您对同时连接的需求更大,则以下情况适用:

设置用户连接

  • 在对象资源管理器中,在服务器上单击鼠标右键,然后单击“属性”

  • 单击“连接”节点

  • 在“连接”下的“最大并发连接数”框中,键入或选择0到32767之间的值以设置最大连接数 允许同时连接到的实例的用户数 SQL Server

  • 重新启动SQL Server

  • 因此,最大连接数为32767,在SQL Server 2014中也是如此


    您可以运行
    sp\u configure
    来获取当前的运行值。

    如果您只查看10个客户端,SQL Server应该能够处理该问题。

    除此之外,这只是一个设计这种负载的问题。例如,您希望确保在正确的时间发生正确的锁定。本质上,让多个并发客户端访问同一个数据库与让多个并发线程在一台机器上访问相同的变量是一样的。这个数据库比一个
    int
    要聪明一点,但是你仍然需要确保你知道事情是如何发生的

    例如,假设您有一个表,其中包含要完成的
    任务
    ,它有一列表示
    ID
    ,一列表示
    LastCompleted
    时间。在单个客户端上,您可能希望编写访问它的内容,如下所示:

  • 获取下一个已
    LastCompleted
  • 完成这项任务,需要五分钟
  • UPDATE
    要设置的表
    LastCompleted=GETDATE()
  • 然后你可以很容易地每小时完成所有任务

    但是,如果您面临多个客户端访问,这将导致多个客户端多次抓取同一任务,并同时执行该任务。在这种情况下,您可能希望另一列将
    InProgressAsOf
    指示为日期,然后您可以根据需要重试孤立的任务,但您永远不会冒发生重叠的风险。即使这样,您也可能希望在
    UPDATE
    上使用
    OUTPUT
    子句来确保它是原子的

  • 从InProgressAsOf=GETDATE()输出中删除的更新任务集获取结果。*其中LastCompleted
  • 完成这项任务,需要五分钟
  • UPDATE
    要设置的表
    LastCompleted=GETDATE()
  • 但是,是的,只要掌握了多线程操作的细微差别,就可以在同一个数据库上运行10个并发连接。

    看看