powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# пул соединений с SQL 2005
5 сообщений из 5, страница 1 из 1
C# пул соединений с SQL 2005
    #39195125
tatanat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте все!
Проблема с соединением с базой данных:
Устанавливаю соединение

string conn="Persist Security Info=true; User ID=TestM; Password=TestM; Initial Catalog=TestM; Data Source=mySQL; " +
"Pooling=true; Min Pool Size=0; Max Pool Size=100; Connection Lifetime=0";
using (SqlConnection connection = new SqlConnection(conn))
{
// открыть соединение
connection.Open();
SqlCommand tcom;
tcom = new SqlCommand("USE testir", connection);
tcom.ExecuteNonQuery();
// активировать разрешения, связанные с ролью приложения в базе данных testir
tcom = new SqlCommand("EXEC SP_SETAPPROLE 'v_testir', 'vtest'", connection);
tcom.ExecuteNonQuery();
...
connection.Close();
}

Соединение сохраняется в пуле соединений.
Но при повторном обращении соединение устанавливается, но на обращения
tcom = new SqlCommand("USE testir", connection);
выдается ошибка (Source NET SqlClient Data Privider)
Может кто-нибудь уже сталкивался с такой проблемой?
...
Рейтинг: 0 / 0
C# пул соединений с SQL 2005
    #39195131
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tatanat,
коннекцию открывай снова
...
Рейтинг: 0 / 0
C# пул соединений с SQL 2005
    #39195151
tatanat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Открываю, но при попытке работать с этим соединением получаю ошибку.
Где-то было написано, что при использовании с пулами нельзя пользоваться ролями приложений?
...
Рейтинг: 0 / 0
C# пул соединений с SQL 2005
    #39195210
super-code
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tatanat,

Да, нужно очищать пул коннектов, если используете sp_setapprole:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
static void setAppRole(SqlConnection conn) 
    {
        for (int i = 0; i < 2; i++)
        {
            conn.Open();
            try
            {
                using (IDbCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = "exec sp_setapprole ";
                    cmd.CommandText += string.Format("@rolename='{0}'", "MyAppRole");
                    cmd.CommandText += string.Format(",@password='{0}'", "password1");
                    cmd.ExecuteNonQuery();
                }
            }
            catch (SqlException ex)
            {
                if (i == 0 && ex.Number == 0)
                {
                    conn.Close();
                    SqlConnection.ClearPool(conn);
                    continue;
                }
                else
                {
                    throw;
                }
            }
            return;
        }
    }
...
Рейтинг: 0 / 0
C# пул соединений с SQL 2005
    #39195329
tatanat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока так и делаю. Значит при использовании роли приложения пулом соединения пользоваться нельзя
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / C# пул соединений с SQL 2005
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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