2009-06-19 16 views
5

Mamy kilka list danych pobieranych z naszej aplikacji za pośrednictwem polecenia SqlCommand wykonującego kwerendę SELECT w bazie danych SQL Server. Nie jawnie ustawiamy transakcji na SqlCommand, zamiast tylko przekazujemy ją SqlConnection i uruchamiamy. Czy jest tak, że gdy żadna transakcja nie zostanie określona, ​​SQL Server zainicjuje i użyje domyślnej transakcji z domyślną wartością IsolationLevel z ReadCommitted?Wykonywanie polecenia SQLC bez określania transakcji

Odpowiedz

3

Serwer SQL może pracować szczęśliwie bez jawnej transakcji. Ale tak, uważam, że jest to zasadniczo read-commit (chyba, że ​​dodasz dodatkowe wskazówki do swoich obiektów zapytań, takich jak UPDLOCK/NOLOCK). Można badać to z:

DBCC USEROPTIONS 

który pokazuje (między innymi):

isolation level read committed 
5

SQL tworzy transakcję niejawnie dla swoich wypowiedzi, a ta transakcja jest zaangażowana gdy oświadczenie kończy. Poziom izolacji tej transakcji będzie bieżącym poziomem izolacji, który domyślnie jest ustawiony na READ COMMITTED. Niektóre stwierdzenia zastępują aktualny poziom izolacji i wymuszają READ COMMITTED (np. RECEIVE).

Jeśli twoja komenda Sql wykonuje zadanie wsadowe (więcej instrukcji), każda instrukcja dostępu do tabel utworzy własną transakcję.

Domyślna autocommit of transactions jest kontrolowana przez zmianę SET IMPLICIT_TRANSACTION ON.

Aby uzyskać więcej informacji, zobacz Controlling Transactions.

+0

Może mam ten sam problem tutaj: http://stackoverflow.com/questions/41096727/is-there-an-implicit-transaction-in-sqlcommand-executenonquery – VansFannel

Powiązane problemy