개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.26 06:59

sqlsrv_rollback 함수 사용 시 에러 발생 및 해결 방법

목록
  • 커밋광 1일 전 2025.07.26 06:59
  • 5
    1
제가 php에서 sqlsrv_rollback 함수를 사용하여 트랜잭션을 rollback 시키려고 하는데, 에러가 발생하고 있습니다.

트랜잭션 시작은 sqlsrv_begin_transaction 함수를 사용하였고,

트랜잭션을 rollback 하기 위해 sqlsrv_rollback 함수를 사용하였습니다.

하지만, 에러가 발생하여 rollback이 제대로 수행되지 않고 있습니다.

에러 메시지는 다음과 같습니다.

"Warning: sqlsrv_rollback(): SQLServer driver warning: The current transaction has been marked for rollback by the application."

혹시 rollback 함수를 사용하는 방법에 대해 알려주실 수 있을까요?

혹은 rollback 시 에러가 발생하는 이유에 대해 알려주실 수 있을까요?

혹시 rollback 함수를 사용할 때 주의해야 할 점이 있는지 알려주실 수 있을까요?

제가 rollback 함수를 사용할 때 주의해야 할 점을 알려주실 수 있으시면 많은 도움이 될 것입니다.

혹시 rollback 함수를 사용하는 예제 코드를 알려주실 수 있을까요?

예를 들어, 다음과 같은 코드를 사용하였을 때 에러가 발생하는 이유에 대해 알려주실 수 있을까요?

php

$conn = sqlsrv_connect('localhost', array('Database' => 'mydb'));



if (!$conn) {

    die(print_r(sqlsrv_errors(), true));

}



sqlsrv_begin_transaction($conn);



sqlsrv_query($conn, 'INSERT INTO mytable (id, name) VALUES (1, 'John')');



sqlsrv_query($conn, 'INSERT INTO mytable (id, name) VALUES (2, 'Jane')');



sqlsrv_rollback($conn);



sqlsrv_close($conn);



혹시 rollback 함수를 사용할 때 주의해야 할 점을 알려주실 수 있으시면 많은 도움이 될 것입니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    sqlsrv_rollback 함수를 사용할 때 주의해야 할 점은 다음과 같습니다.

    1. 트랜잭션을 시작하기 전에 연결을 확인하세요. sqlsrv_begin_transaction 함수를 사용하기 전에 sqlsrv_connect 함수를 사용하여 연결을 확인하세요. 연결이 실패한 경우 sqlsrv_errors 함수를 사용하여 에러 메시지를 확인하세요.

    2. 트랜잭션을 시작한 후에만 rollback 함수를 사용하세요. sqlsrv_begin_transaction 함수를 사용하여 트랜잭션을 시작한 후에만 sqlsrv_rollback 함수를 사용하세요. 트랜잭션을 시작하지 않은 경우 rollback 함수를 사용하면 에러가 발생합니다.

    3. 트랜잭션을 시작한 후에만 close 함수를 사용하세요. sqlsrv_begin_transaction 함수를 사용하여 트랜잭션을 시작한 후에만 sqlsrv_close 함수를 사용하세요. 트랜잭션을 시작하지 않은 경우 close 함수를 사용하면 에러가 발생합니다.

    4. 트랜잭션을 시작한 후에만 rollback 함수를 사용하세요. sqlsrv_begin_transaction 함수를 사용하여 트랜잭션을 시작한 후에만 sqlsrv_rollback 함수를 사용하세요. 트랜잭션을 시작하지 않은 경우 rollback 함수를 사용하면 에러가 발생합니다.

    5. 에러 메시지를 확인하세요. sqlsrv_rollback 함수를 사용할 때 에러가 발생한 경우 sqlsrv_errors 함수를 사용하여 에러 메시지를 확인하세요.

    예제 코드를 다음과 같이 수정하여 에러를 해결할 수 있습니다.

    #hostingforum.kr
    php
    
    $conn = sqlsrv_connect('localhost', array('Database' => 'mydb'));
    
    
    
    if (!$conn) {
    
        die(print_r(sqlsrv_errors(), true));
    
    }
    
    
    
    sqlsrv_begin_transaction($conn);
    
    
    
    $sql = "INSERT INTO mytable (id, name) VALUES (1, 'John')";
    
    $stmt = sqlsrv_query($conn, $sql);
    
    
    
    if (!$stmt) {
    
        die(print_r(sqlsrv_errors(), true));
    
    }
    
    
    
    $sql = "INSERT INTO mytable (id, name) VALUES (2, 'Jane')";
    
    $stmt = sqlsrv_query($conn, $sql);
    
    
    
    if (!$stmt) {
    
        die(print_r(sqlsrv_errors(), true));
    
    }
    
    
    
    sqlsrv_rollback($conn);
    
    
    
    sqlsrv_close($conn);
    
    


    이 예제 코드에서는 sqlsrv_begin_transaction 함수를 사용하여 트랜잭션을 시작한 후에만 sqlsrv_rollback 함수를 사용하여 트랜잭션을 rollback합니다. 또한 sqlsrv_errors 함수를 사용하여 에러 메시지를 확인합니다.

    2025-07-26 07:00

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 39,236건 / 4 페이지

검색

게시물 검색