【问题标题】:How do you instantiate multiple sql connections to the same database via threading without getting an error?如何通过线程实例化到同一个数据库的多个 sql 连接而不会出错?
【发布时间】:2011-04-08 16:33:41
【问题描述】:

我正在运行一个程序,我在其中调用一个创建数据库连接然后运行存储过程的函数。我从四个单独的线程中调用了这个函数四次。我收到错误消息(用户“sa”登录失败。该用户未与受信任的 SQL Server 连接关联。 异常来源: .Net SqlClient 数据提供者) 当我使用多个线程时,但如果我让线程一个接一个地运行,我就没有问题。

下面是我的代码。

    Dim comExecuteInsert As New SqlCommand
    Dim comm As New SqlConnection
    If (Not comm Is Nothing) Then
        comm = Nothing
    End If


    comm = NewConnection(Conversion.ServerBox.SelectedText, "TESTAAA")

    Try
        comm.Open()
    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try


    comExecuteInsert.Connection = comm
    comExecuteInsert.CommandType = CommandType.StoredProcedure
    comExecuteInsert.CommandText = strProcedureName
    comExecuteInsert.CommandTimeout = 260000
    comExecuteInsert.Parameters.Add("@tableName", SqlDbType.VarChar, 100).Value = strTableName
    comExecuteInsert.Parameters.Add("@filename", SqlDbType.VarChar, 500).Value = strFileName
    comExecuteInsert.ExecuteScalar()
    comExecuteInsert.Parameters.Clear()
    comm.Close()

【问题讨论】:

    标签: sql vb.net


    【解决方案1】:

    您使用的是什么版本的 SQL Server - 更重要的是,什么版本 - 您使用的是 SQL Server?另外,您在哪个版本的 Windows 上运行 SQL 服务器?

    某些版本的 SQL Server 限制了您可以同时使用的活动连接数,而某些版本的 Microsoft Windows 限制了可以同时建立的入站连接数。

    我不确定限制是什么。不过,我确信这些数字记录在 Microsoft.com 的某个地方。

    如果您使用的是 Windows 2008 Server 和 SQL Server 2008 Enterprise,您应该能够同时获得数千个连接(不过,您可能不得不担心事务和性能)。

    另一方面,如果您在 Windows XP Home Edition 上使用 SQL Server Developer Edition,则一次连接可能不能超过 5 个。如果其他任何东西都连接到 Windows 或 SQL,那也可能会影响您的限制 - 是否有人使用远程控制台查看那台计算机?您的驱动器是否已映射到您的计算机?

    【讨论】:

    • 我使用的是 SQL Server 2008,但问题是我在单独的线程 (Conversion.ServerBox.SelectedText) 上调用了一个表单。
    猜你喜欢
    • 2012-11-21
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 2014-03-13
    • 2013-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多