2009-11-27 3 views
-1

Ce script T-SQL fonctionne correctement dans SQL Server 2005 mais dans SQL Server 2000, il indique une syntaxe incorrecte à côté de 'Try' 'End'. Toute aide s'il vous plaît?Script compatible 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 vérifier cette question, il est similaire à votre question – sikender

+1

Pourquoi développez-vous dans SQL Server 2005 si la base de données pour laquelle vous écrivez du code est une base de données SQL Server 2000? Vous ne devriez jamais avoir ce problème si vous développez contre la bonne base de données. Tout ce que vous avez fait, c'est gaspiller votre entreprise à écrire du code qui n'a aucune possibilité de fonctionner. – HLGEM

Répondre

4

Comme Sikender a dit dans son commentaire, this après pose la même question presque exactement, et la réponse est la même chose ici. SQL Server 2000 ne suport pas try..catch; qui a été ajouté dans SQL Server 2005. Donc, peu importe ce que vous essayez, il ne travail dans SQL Server 2000.

1

Comme @Ken blanc dit try and catch est pas pris en charge dans SQL Server 2000. Vous pouvez utiliser @@ERROR pour votre objectif. vous pouvez le vérifier après chaque déclaration et si une erreur est survenue, effectuez l'annulation. Vous pouvez utiliser le code suivant:

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