The session configuration information provides several properties which control the default settings for processes started on the session. Once the session is connected, changing these settings has no effect.
The DefaultIsolationLevel property determines the default setting for the isolation level of processes started on this session. This in turn determines the isolation level for transactions started on the process when no isolation level is specified with the begin transaction call. The following table lists the available isolation levels.
These isolation levels balance concurrency with contention. The browse isolation level has low contention, but is subject to certain update anomalies resulting from the interaction of other transactions. The higher the isolation level, the better the isolation from other transactions, but the more contention a transaction running at that isolation level will cause.
The default setting for this value is Isolated. However, the Frontend Clients use Browse isolation when it is known that the statement to be executed will not update any information. For example, scrolling through data in a browse interface uses Browse isolation. When data modification statements are executed, the Frontend Clients will use the Isolated level. In addition, the Frontend Clients use optimistic concurrency checks to ensure that data that has been read while in browse isolation has not been changed by other transactions since it was read.
The DefaultMaxCallDepth property determines the default maximum call depth for processes started on this session. The Dataphor Server attempts to prevent runaway recursion by limiting the maximum call depth on any given process.
The DefaultMaxStackDepth property determines the default maximum stack depth for processes started on this session. The Dataphor Server stack is a logical stack, meaning that the depth is determined strictly by the number of items on the stack, not by their relative sizes. This property prevents a process from overrunning due to recursive calls.
The DefaultUseDTC property determines the default UseDTC setting for processes started on this session. This setting in turn determines whether or not the Microsoft Distributed Transaction Coordinator (DTC) will be used to coordinate distributed transactions on the process.
Because of the Dataphor Server’s open-ended storage architecture, transactions must be coordinated with each system involved in a given operation. This type of transaction is known as a distributed transaction. The Dataphor Server can function as a distributed transaction coordinator, or it can employ the services of the Microsoft Distributed Transaction Coordinator (MSDTC), based on the value of this setting.
The DefaultUseImplicitTransactions property determines the default UseImplicitTransactions setting for processes started on this session. This setting in turn determines whether calls made through the CLI boundary will start an implicit transaction if one is not started on the process.
If UseImplicitTransactions is true, every call that crosses the CLI boundary will ensure that if no transaction is currently in progress on the process, then one is started. When the call returns, if any unhandled exceptions occurred, the implicit transaction is rolled back, otherwise it is committed. Note that any nested transactions started during the call are rolled back or committed as well. This behavior is called transactional call protocol.