Pergunta

Temos algumas listas de dados a ser buscada em nossa aplicação através de um SqlCommand executar uma consulta SELECT em um banco de dados SQL Server. Nós não explicitamente configurar uma transação no SqlCommand, ao invés de apenas passando um SqlConnection e executá-lo. É o caso que quando nenhuma transação é especificado que o SQL Server irá iniciar e usar uma transação padrão com o IsolationLevel padrão de ReadCommitted?

Foi útil?

Solução

SQL Server pode funcionar feliz sem uma transação explícita. Mas sim, eu acredito que é essencialmente leitura comprometida (a menos, claro, você adiciona dicas extras para seus objetos de consulta, como UPDLOCK / NOLOCK). Você pode investigar isso com:

DBCC USEROPTIONS

que mostra (entre outros):

isolation level read committed

Outras dicas

SQL cria uma transação implicitamente as suas declarações, e esta transação é cometida quando da conclusão do comunicado. O nível de isolamento da transação será o nível de isolamento atual, cujo padrão é READ COMMITTED. Certas declarações substituir o nível de isolamento atual e fazer cumprir LEIA cometida (eg. RECEBER).

Se o seu SqlCommand executa um lote (mais declarações), então cada declaração que as tabelas de acesso irá criar sua própria transação.

O padrão autocommit de transações é controlado alterando a IMPLICIT_TRANSACTION SET ON.

controle das transações para mais detalhes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top