Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Connection.Open() открывает два соединения на SQL Server / 11 сообщений из 11, страница 1 из 1
10.11.2003, 15:06
    #32318985
NochEinBeginner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection.Open() открывает два соединения на SQL Server
Есть форма с кнопкой btnConnection. Далее:

Imports System.Data
Imports System.Data.SqlClient
Imports System.IO
Imports MSSQLServer
Public Class MyForm
Inherits System.Windows.Forms.Form
Private cnn As New SqlConnection()
Private Sub btnConnection_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnConnection.Click
Dim sConnectionString As String="server=myserver;database=myDB;user
id=sa;pwd=1234567"
cnn.ConnectionString = sConnectionString
Try
Cursor.Current = System.Windows.Forms.Cursors.WaitCursor
If cnn.State.Closed = ConnectionState.Closed Then
cnn.Open()
End If
Cursor.Current = System.Windows.Forms.Cursors.Default
Catch ex As Exception
Cursor.Current = System.Windows.Forms.Cursors.Default
Return
End Try
End Sub
End Class

Так вот эта cnn.Open() открывает на сервере два соединения совершенно одинаковые, причем они не закрываются cnn.Close(), а закрываются только когда закрываешь форму.

Help! Где засада?
...
Рейтинг: 0 / 0
10.11.2003, 15:42
    #32319057
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection.Open() открывает два соединения на SQL Server
вообщето должно быть одно подключение. второе - возможно от EM. закрытие - см. Pooling Connections
http://msdn.microsoft.com/library/en-us/cpguide/html/cpconConnectionPoolingForSQLServerNETDataProvider.asp?frame=true
...
Рейтинг: 0 / 0
10.11.2003, 15:52
    #32319080
NochEinBeginner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection.Open() открывает два соединения на SQL Server
Нет, на EM захожу под другим логином, SQL Server'ным, а из проги коннектюсь с Trusted_Connection=Yes
...
Рейтинг: 0 / 0
10.11.2003, 16:11
    #32319121
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection.Open() открывает два соединения на SQL Server
server=myserver;database=myDB;user id=sa;pwd=1234567
что то в твоей строке траста не видно ???

ну да ладно.
возможно у тебя было одновременно открыто 2 подключения - вот они остались. проведи чистый эксперимент ...
...
Рейтинг: 0 / 0
10.11.2003, 16:28
    #32319156
NochEinBeginner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection.Open() открывает два соединения на SQL Server
2 кузя

"server=myserver;database=myDB;user id=sa;pwd=1234567
что то в твоей строке траста не видно ??? "

это я точно протормозил :) , просто что-то пример не так привел, на самом деле:

"server=myserver;database=myDB;user id=;pwd=;trusted_connection=yes


"возможно у тебя было одновременно открыто 2 подключения - вот они остались. проведи чистый эксперимент ..."

Да я их убивал сколько раз, эти подключения! Какой эксперимент будет чистым?
...
Рейтинг: 0 / 0
10.11.2003, 17:32
    #32319222
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection.Open() открывает два соединения на SQL Server
вот провел чистый экперимент - при загрузке основной формы выполнил
Код: plaintext
1.
SqlConnection cnn=new SqlConnection( "server=myserver;database=myDB;user id=sa;pwd=1234567 ");
cnn.Open();
остановился в отладчике и через EM посмотрел и увидел от приложения только одно подключение (ну нет там второго от приложения ".Net SqlClient Data Provider")

а что значит убивал - если делал Close, то это не спасет - соединение останется висеть.
...
Рейтинг: 0 / 0
10.11.2003, 17:49
    #32319249
NochEinBeginner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection.Open() открывает два соединения на SQL Server
"а что значит убивал - если делал Close, то это не спасет - соединение останется висеть"

Типа Close делает connection вроде как просто disabled, а на сервере оно должно висеть?

"SqlConnection cnn=new SqlConnection("server=myserver;database=myDB;user id=sa;pwd=1234567");
cnn.Open();"

Мож это басик глючит, а на си все нормально?
...
Рейтинг: 0 / 0
10.11.2003, 18:05
    #32319274
NochEinBeginner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection.Open() открывает два соединения на SQL Server
"остановился в отладчике и через EM посмотрел и увидел от приложения только одно подключение"

А я остановился в отладчике после cnn.Open() посмотрел через EM и там висят эти две заразы! и обе одинаковые! и имя приложения, и имя хоста, и сет.биб-ки, и юзер (я). Вот веришь?
...
Рейтинг: 0 / 0
10.11.2003, 18:54
    #32319308
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection.Open() открывает два соединения на SQL Server
Вот веришь?
а что остается делать ? верю (правда, вот выучу васик, то проверю...)

Типа Close делает connection вроде как просто disabled, а на сервере оно должно висеть?
да, конекшн не закрывается и остается в пуле. я ж тебе ссылку привел на механизм хеширования конекшинов (connection pooling).
...
Рейтинг: 0 / 0
10.11.2003, 19:13
    #32319319
кузя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection.Open() открывает два соединения на SQL Server
а смотришь на сервер с какой машины ? если со своей, то выйди из всех программ, котрые коннектятся к серверу, запусти свою программу и только потом запусти EM - вот и получишь одно подключение

PS. вот выучил васик , написал такую простенькую программу
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Imports System.Data
Imports System.Data.SqlClient

Public Class Form1
Inherits System.Windows.Forms.Form
#Region  " Windows Form Designer generated code " 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  Dim cn As New SqlConnection( "User ID=userA;Data Source=myserv;Password=1234 ;Initial Catalog=db;")
  cn.Open()
End Sub
End Class
и хоть тресни - одно подключение.
...
Рейтинг: 0 / 0
11.11.2003, 10:19
    #32319640
NochEinBeginner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Connection.Open() открывает два соединения на SQL Server
"а смотришь на сервер с какой машины ? если со своей, то выйди из всех программ, котрые коннектятся к серверу, запусти свою программу и только потом запусти EM - вот и получишь одно подключение"

Да, это прокатило... Только почему если ЕМ запустить первым то вижу два коннекта, а если после проги, то один коннект?

"я ж тебе ссылку привел на механизм хеширования конекшинов (connection pooling)."

Да, я прчитал эту ссылку, только там не писали что соединение будет видно на серваке :) буржуи проклятые :)
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Connection.Open() открывает два соединения на SQL Server / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]