我正在开发一个访问Microsoft SQL Server的VB.NET Web服务项目。
每次用户访问Web服务时,它都会执行SQL函数。
如果Web服务正在等待执行fill命令的SQL的响应,并且另一个用户连接到尝试执行对SQL的不同调用的Web服务,则必须等到第一个电话会结束。
以下是初始SQL连接的示例代码:
Dim tmpCnn As New SqlConnection
tmpCnn.ConnectionString = new String("Server=SQLServer002; User Id=****; Password=****; Database=Reports; MultipleActiveResultSets=True; Application Name=WebService; Connect Timeout=120; pooling='true'; Max Pool Size=200;")
tmpCnn.Open()
以下是每个SQL调用填充的示例:
Dim sqlCmd As New SqlCommand
sqlCmd.CommandType = CommandType.Text
sqlCmd.Connection = tmpCnn
Dim num As Integer = 1234
sqlCmd.CommandText = " exec [WCF].[get_rep] " & num
Dim sqlDA As New SqlDataAdapter
sqlDA.SelectCommand = sqlCmd
sqlDA.Fill(ds)
我们的项目要求是第二个用户不必等待第一个用户的调用才能完成执行。此外,我们项目的要求是,对于所有呼叫,Web服务将仅使用一个与SQL的连接。
我们如何解决这个问题?
谢谢
答案 0 :(得分:0)
在查询中使用NOLOCK。例如,
SELECT
first_name,
last_name,
FROM dbo.person p WITH (NOLOCK)
JOIN dbo.employee e WITH (NOLOCK)
ON e.person_id = p.person_id
WHERE p.person_id = 1
答案 1 :(得分:0)
我没有足够的代表发表评论,所以我会在此发表评论:
仅使用一个连接无法实现此目的,因为单个连接无法同时执行多个查询。考虑有多个连接。无论如何,SQL服务器的连接数量确实很高。这样您就可以同时执行多个查询。