블로그로도 수익을 창출할 수 있다는 것을 아시나요? 이 블로그는 매달 200$ 이상의 수입을 애드센스 광고수입으로 벌어들입니다.
|
|
System.Transactions를 사용하려면 System.Transactions.dll에 대한 참조가 필요합니다.
다음 코드에서는 서로 다른 두
SqlConnection 개체(
TransactionScope 블록에 래핑됨)로 나타나는 두 개의 서로 다른 SQL Server 인스턴스에 대한 승격 가능한 트랜잭션을 만드는 방법을 보여 줍니다. 이 코드에서는
using 문을 사용하여
TransactionScope 블록을 만든 후 첫 번째 연결을 엽니다. 그리고 나면 이 연결은
TransactionScope에 자동으로 참여합니다. 이 트랜잭션은 처음에 완전 분산 트랜잭션이 아니라 간단한 트랜잭션으로 참여합니다. 이 코드에서는 간결한 설명을 위해 생략되었지만 조건 논리가 있는 것으로 가정합니다. 필요한 경우에만 두 번째 연결을 열어서
TransactionScope에 참여시킵니다. 연결이 열리면 트랜잭션이 완전 분산 트랜잭션으로 자동 승격됩니다. 그런 다음, 코드에서는 트랜잭션을 커밋하는
Complete를 호출합니다. 이 코드에서는 연결에 대한 using 문을 종료하면 두 연결을 삭제합니다.
TransactionScope의
Dispose 메서드는
TransactionScope의
using 블록에서 자동으로 호출됩니다.
TransactionScope 블록의 한 지점에서 예외가 발생한 경우에는
Complete가 호출되지 않으며
TransactionScope가 삭제되면 분산 트랜잭션이 롤백됩니다.
Visual Basic |
Using transScope As New TransactionScope()
Using connection1 As New SqlConnection(connectString1)
' Opening connection1 automatically enlists it in the
' TransactionScope as a lightweight transaction.
connection1.Open()
' Do work in the first connection.
' Assumes conditional logic in place where the second
' connection will only be opened as needed.
Using connection2 As New SqlConnection(connectString2)
' Open the second connection, which enlists the
' second connection and promotes the transaction to
' a full distributed transaction.
connection2.Open()
' Do work in the second connection.
End Using
End Using
' Commit the transaction.
transScope.Complete()
End Using |
C# |
using (TransactionScope transScope = new TransactionScope())
{
using (SqlConnection connection1 = new
SqlConnection(connectString1))
{
// Opening connection1 automatically enlists it in the
// TransactionScope as a lightweight transaction.
connection1.Open();
// Do work in the first connection.
// Assumes conditional logic in place where the second
// connection will only be opened as needed.
using (SqlConnection connection2 = new
SqlConnection(connectString2))
{
// Open the second connection, which enlists the
// second connection and promotes the transaction to
// a full distributed transaction.
connection2.Open();
// Do work in the second connection.
}
}
// The Complete method commits the transaction.
transScope.Complete();
} |