2010-10-26 6 views
5

J'utilise SQL Server 2008. Je l'ai essayé d'exécuter ce qui suit:CATCH dans SQL TRY serveur

BEGIN TRY 
    SELECT 1/0; 
END TRY 
BEGIN CATCH 
    PRINT 'ERROR' 
END CATCH; 

mais je reçois l'erreur suivante:

>Msg 170, Level 15, State 1, Line 1 
Line 1: Incorrect syntax near 'TRY'. 
Msg 156, Level 15, State 1, Line 3 
Incorrect syntax near the keyword 'END'. 

Quelqu'un peut-il me dire comment exécuter essayer attraper dans SQL Server?

+1

Je ne reçois pas d'erreur dans SQL 2008 – Brad

+1

Je suis aussi capable d'exécuter ce code non édité, SQL 2005. – Fosco

+0

Avez-vous quelque chose d'autre dans la fenêtre de requête qui peut être l'exécution ainsi que? – Oded

Répondre

8

C'est une déclaration tout à fait valable pour SQL Server 2005 et, donc je vérifier votre niveau de compatibilité en utilisant sp_dbcmptlevel (Transact-SQL):

exec sp_dbcmptlevel 'YourDatabaseName' 

80 = SQL Server 2000
90 = SQL Server 2005
100 = SQL Server 2008

Je pense qu'il sera de retour 80 ou moins, il semble que ce ne connaît pas BEGIN TRY, seulement BEGIN. Le BEGIN TRY a été ajouté dans SQL Server 2005.

+1

Pour moi, la même erreur. mais le mien est le niveau de compatibilité actuel est 100 .. –

+0

@Jeeva Jsb, si vous êtes sûr sur le mode de compatibilité, puis créez une nouvelle question et postez votre code –

2

fonctionne très bien pour moi aussi, non édité, sur SQL Server 2008.

2

Si vous avez toujours cette erreur, la question devient, avez-vous mis une section BEGIN CATCH ... END CATCH. Si non, vous obtenez cette erreur. Si vous avez une section BEGIN TRY ... END TRY sans code T-SQL, elle produira également l'erreur.

Je ne pense pas qu'il soit utile que les gens vous disent que vous utilisez SQL Server 2000. Il s'agit plus probablement d'un problème de codage T-SQL car vous avez tendance à savoir quel serveur vous utilisez.