2009-11-27 7 views
-1

이 T-SQL 스크립트는 SQL Server 2005에서 제대로 작동하지만 SQL Server 2000에서는 'Try' 'End'근처에서 잘못된 구문이 표시됩니다. 어떤 도움을 주시겠습니까? Sikender 그의 의견에 말했듯이SQL Server 2000 호환 스크립트

Begin Transaction 
Begin Try 
    UPDATE Test 
    SET RefID = 'bc27de13-2323-4ce8-8c87-0171efbd812a' 
    WHERE RefID = 'bc27de13-2323-4ce8-8c87-0171ffbd812a'; 

    DELETE FROM Physician 
    WHERE RefID = 'bc27de13-2323-4ce8-8c87-0171ffbd812a' 

    Commit Transaction 
End Try 
Begin Catch 
    Rollback Transaction 
End Catch 
+2

http://stackoverflow.com/questions/1810032/try-catch-not-working-in-sql-server-2005/1810201#1810201 확인이 질문에 그 질문에 비슷합니다. – sikender

+1

코드를 작성하는 데이터베이스가 SQL Server 2000 데이터베이스 인 경우 SQL Server 2005에서 개발하는 이유는 무엇입니까? 올바른 데이터베이스에 대해 개발하면이 문제가 발생하지 않습니다. 당신이 한 모든 일은 당신의 회사가 일할 가능성이없는 코드 작성에 시간을 낭비하는 것입니다. – HLGEM

답변

4

this 후 거의 정확히 같은 질문을하고, 여기에 대한 대답은 동일합니다. SQL Server 2000은 try..catch를 지원하지 않습니다. 그건 당신이 무엇을하려고 그래서 상관없이 SQL 서버 2005에 추가되지 않았다, 화이트 try and catch에게 2000

1

@Ken으로 SQL Server의 결코 작업은 당신이 @@ERROR를 사용할 수있는 SQL 서버 2000에서 지원되지 않는 것이다 목적. 당신은 모든 진술 후에 그것을 검사 할 수 있고 오류가 발생하면 롤백을 수행한다. 당신은 다음과 같은 코드를 사용할 수 있습니다

Begin Transaction 
    UPDATE Test 
    SET RefID = 'bc27de13-2323-4ce8-8c87-0171efbd812a' 
    WHERE RefID = 'bc27de13-2323-4ce8-8c87-0171ffbd812a'; 
    if @@ERROR<>0 
     Rollback transaction 
    DELETE FROM Physician 
    WHERE RefID = 'bc27de13-2323-4ce8-8c87-0171ffbd812a' 
     if @@ERROR<>0 
      Rollback transaction 
    Commit Transaction