Проблема пула SQL Server - PullRequest
       9

Проблема пула SQL Server

0 голосов
/ 12 ноября 2009

Я написал веб-приложение, в котором я не разрешил пул соединений для этого приложения. Я написал пример кода, как показано ниже, который получает запись из моей таблицы 20 раз и заполняет набор данных. У меня тесная связь каждый раз.

Но если я смотрю в мониторе активности SQL Server, он показывает одно открытое соединение в спящем режиме.

  1. кто-нибудь скажет мне, почему это происходит?
  2. увеличивается ли это спящее соединение, если количество пользователей увеличивается?
  3. Если SQL Server объединяет в пул мое соединение, тогда зачем его пул, если я не разрешил пул для этого приложения? Как я могу избежать этого?

Код для извлечения данных

Try
  Dim i As Integer
  For i = 0 To 20
    Dim _db As New commonlib.Common.DBManager(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString.ToString())
    GridView1.DataSource = _db.ExecuteDataSet(CommandType.Text, "SELECT * FROM BT_AppSetting")

    GridView1.DataBind()
  Next
Catch ex As Exception
  Response.Write(ex.Message.ToString())
  ex = Nothing
End Try

Конструктор DBManager

'CONSTRUCTOR WHICH ACCEPTS THE CONNECTION STRING AS ARGUMENT
Public Sub New(ByVal psConnectionString As String)

   'SET NOT ERROR
   _bIsError = False
   _sErrorMessage = Nothing

   _cn = New SqlConnection
   _sConnectionString = psConnectionString
   _cn.ConnectionString = _sConnectionString

   Try
       _cn.Open()
   Catch ex As Exception
       _bIsError = True
       _sErrorMessage = ex.ToString
       ex = Nothing
   End Try
End Sub

Тело функции ExecuteDataSet

Public Function ExecuteDataSet(ByVal CmdType As CommandType, ByVal CmdText As String, ByVal ParamArray Params As SqlParameter()) As DataSet

Try
  Dim cmd As New SqlCommand
  Dim da As New SqlDataAdapter(cmd)
  Dim ds As New DataSet

  PrepareCommand(cmd, CmdType, CmdText, Params)

  da.Fill(ds)

  cmd.Parameters.Clear()

  If _cn.State = ConnectionState.Open Then
     _cn.Close()
  End If

  Return ds
Catch ex As Exception
   _sErrorMessage = ex.ToString
   _bIsError = True
   ex = Nothing
   Return Nothing
End Try

Пожалуйста, помогите мне .... Жду доброго ответа

1 Ответ

0 голосов
/ 25 ноября 2009

1) Я ДУМАЮ, что sql server не закрывает соединение сразу. Вот почему вы это видите.

2) Поскольку вы закрываете соединение, вы должны видеть только одно. Если только ваши пользователи не запускают код одновременно. например, если это было на веб-странице и есть 2 пользователя, вы увидите / увидите 2 соединения.

Также, если вы не закроете свои соединения (просто чтобы попробовать), ваш номер соединения (должен :)) увеличится.

Это ваше приложение .net, которое объединяет в пул соединение, а не сервер sql.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...