Compartilhar via


Promoção de transações

Aplica-se a:SQL Server

A promoção de transações descreve uma transação local superficial que pode ser elevada automaticamente a uma transação totalmente distribuída, conforme necessário. Quando um procedimento armazenado gerenciado é invocado em uma transação de banco de dados no servidor, o código CLR (Common Language Runtime) é executado no contexto de uma transação local. Se houver uma conexão com um servidor remoto aberta em uma transação de banco de dados, a conexão com o servidor remoto será inscrita na transação distribuída e a transação local será elevada automaticamente a uma transação distribuída. Assim, a promoção da transação minimiza a sobrecarga das transações distribuídas, adiando a criação de uma transação distribuída até que seja necessário. A promoção da transação será automática, se tiver sido habilitada usando a palavra-chave Enlist e não exigir a intervenção do desenvolvedor. O provedor de dados .NET Framework para SQL Server dá suporte à promoção de transações, manipulada por meio das classes no namespace System.Data.SqlClient do .NET Framework.

A palavra-chave Enlist

A propriedade ConnectionString de um objeto SqlConnection dá suporte à palavra-chave Enlist , que indica se System.Data.SqlClient detecta contextos transacionais e inscreve automaticamente a conexão em uma transação distribuída. Se essa palavra-chave for definida como true (padrão), a conexão será inscrita automaticamente no contexto da transação atual do thread de abertura. Se essa palavra-chave for definida como false, a conexão SqlClient não irá interagir com uma transação distribuída. Se Enlist não estiver especificada na cadeia de conexão, a conexão será inscrita automaticamente em uma transação distribuída, caso uma seja detectada no momento em que a conexão é aberta.

Transações distribuídas

Normalmente, as transações distribuídas consomem recursos do sistema significativos. O MS DTC (Coordenador de Transações Distribuídas da Microsoft) gerencia essas transações e integra todos os gerenciadores de recursos acessados nessas transações. A promoção de transações, por outro lado, é uma forma especial de uma transação System.Transactions que delega efetivamente o trabalho a uma transação de SQL Server simples. System.Transactions, System.Data.SqlClient e SQL Server coordenam o trabalho envolvido na manipulação da transação, promovendo-a para uma transação distribuída completa conforme necessário.

A vantagem de usar a promoção de transações é que, quando uma conexão é aberta com uma transação TransactionScope ativa e não há qualquer outra conexão aberta, a transação é confirmada como uma transação superficial, em vez de incorrer na sobrecarga adicional de uma transação distribuída completa. Para obter mais informações sobre TransactionScope, confira Usando System.Transactions.

Consulte Também

Integração CLR e transações