O trabalho com bancos de dados muitas vezes sera feito em ambiente de producao, embora se recomende que isso seja evitado ao maximo.Com isto aumenta significativamente o risco de se executar alguma consulta de atualizacao dos dados que cause problemas. Um DELETE ou UPDATE sem WHERE, por exemplo, ja e o suficiente para tirar o sono do desenvolvedor durante muito tempo.Alguns bancos de dados mais antigos e portanto, ha mais tempo no mercado, como o ORACLE, exigem em todas as suas ferramentas de DML que o COMMIT seja sempre explicito, ou seja, para as modificacoes tanto dos dados como da estrutura de tabelas serem persistidas a instrucao deve conter esta instrucao, caso contrario, os resultados estarao pendentes ate fechar a sessao e no momento em que isso e feito, um ROLLBACK e executado automaticamente.O SQL Server ainda nao possui este recurso. Toda e qualquer consulta executada esta no modo AUTO COMMIT. Assim, para evitar problemas causados por este tipo de configuracao, este documento apresenta duas alternativas que visam prevenir problemas futuros. Sao elas:Executar consultas de DML dentro de um bloco BEGIN TRAN ... COMMIT | ROLLBACKDesabilitar o auto commit da ferramenta SSMSConsulta com BEGIN TRAN | COMMIT/ROLLBACKBasta simplesmente colocar as instrucoes envolvidas entre BEGIN TRAN e COMMIT ou ROLLBACK:BEGIN TRAN <INSTRUCOES DML>COMMIT; -- ou ROLLBACKVamos usar o exemplo da tabela DOCUMENTOS.FOLDERSA consulta demonstrada a seguir insere quatro registros na tabela, imprime os resultados, faz o ROLLBACK da operacao e um novo SELECT.begin tran insert into documents.Folders (FolderId, ParentFolderId, Name) values (100, NULL, 'TREINAMENTO'), (101, 100, 'APOSTILAS'), (102, 100, 'BACKUPS'), (103, 100, 'AVALIACOES'); select * from documents.Folders where FolderId > 99;rollbackselect *from documents.Folderswhere FolderId > 99;Esta consulta traz os resultados que podem ser conferidos na proxima figura, primeiro, como resultado da instrucao SELECT dentro do bloco BEGN TRAN ... ROLLBACK, sao exibidos os registros que foram inseridos. Fora do bloco, um novo SELECT e enviado e desta vez, nenhum registro e exibido.Desabilitando o auto commit do SSMSExecutar as consultas dentro do bloco BEGIN TRAN ... COMMIT | ROLLBACK e apenas uma medida paliativa. Em um cenario adequado de configuracoes de acesso e permissoes, o banco de dados deve ter um usuario especifico para realizar operacoes DML, DDL e um apenas para executar consultas.Este cenario e raro de encontrar. Assim, para evitar problemas, uma alternativa e desligar o AUTO COMMIT do SSMS (ate o dia em que isso venha, como se espera, desligado por padrao).Para fazer isso no SSMS (em qualquer versao) acesse o menu Ferramentas > Opcoes. Na janela que se abre, expanda os itens Execucao da Consulta > SQL Server > ANSI. Marque o campo SET IMPLICIT_TRANSACTIONS como representado na figura abaixo e reinicie o SSMS.Ao executar qualquer consulta (inclusive de SELECAO, infelizmente) sera informado que existem transacoes pendentes quando for fechar a janela da consulta ou a aplicacao e sera solicitado uma confirmacao para o COMMIT: Pode ser que para alguns profissionais este foco que eu venho dando neste recurso do Microsoft SQL Server pareca um pouco exagerado, afinal, e um recurso bem simples e que nao oferece muitas funcionalidades alem