Реклама:

Соединение удаляется из пула, если срок жизни соединения истек либо обнаружено, что нарушена связь соединения с сервером. Последнее обнаруживается только при неудачной попытке обращения к серверу.

2.1.11. Управление пулом соединений с помощью ключевых слов строки соединения

Ниже в таблице приводятся параметры управления пулом .NET-провайдера SQL Server. Эти параметры можно задать в строке соединения (свойство Connec-tionString объекта SQLConnection ).

Параметр

Значение по умолчанию

Описание

Max Pool Size

Максимальное число соединений в пуле

Min Pool Size

Минимальное число соединений в пуле

Pooling

'true'

Поддержка пулинга соединений: когда установлено true, соединение, возвращается в соответствующий пул или, при необходимости, создается и добавляется в соответствующий пул

2.1.12. Транзакции

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

Когда были успешны все действия в контексте транзакции, она подтверждается и источник данных переходит в новое согласованное состояние.

В противном случае, если хотя бы одно из действий, заданных в контексте транзакции, оканчивается аварийно, то транзакция откатывается. Результаты выполнения всех ранее выполненных в контексте транзакции действий отменяются. Источник данных остается в исходном состоянии.

Метод BeginTransaction объектов SqlConnection, OleDbConnection создает объект транзакции (соответственно типа SqlTransaction или OleDbTransaction):

public SqlTransaction BeginTransaction();

public SqlTransaction BeginTransaction( string transactionName ); public SqlTransaction BeginTransaction( IsolationLevel iso ); public SqlTransaction BeginTransaction( IsolationLevel iso, string transactionName );

public OleDbTransaction BeginTransaction();

public OleDbTransaction BeginTransaction( IsolationLevel iso ); Параметры:

transactionName - имя транзакции;

iso - уровень изоляции транзакции 1.

Транзакция подтверждается методом Commit объекта транзакции

public void Commit();

и откатывается методом Rollback объекта транзакции:

public void Rollback();

Нужно отметить, что транзакция должна выполняться и завершаться при открытом соединении. Чтобы соединение не закрылось до окончания транзакции, можно назначить неограниченное время действия соединения, установив параметр Connection Lifetime в строке соединения в значение 0, например:

data source=PAVLIK;initial catalog=bal;persist security info=False; user id=ICH;workstation id= PAVLIK;packet size=4 096;Connection Lifetime=0

Пример получения, использования и завершения транзакции. В таблице SHETA базы данных PAVLIK на 100 рублей увеличивается сумма для клиента с кодом 77 7 и одновременно на столько же уменьшается сумма у клиента с кодом 999. Если одно из изменений завершится аварийно, нужно отменить и остальное.

//---соединение с базой данных

SqlConnection cn = new SqlConnection(


⇐ Предыдущая страница| |Следующая страница ⇒