Kesalahan yang terjadi sebagai hasil kompilasi ulang batch setelah resolusi nama yang ditangguhkan tidak dapat ditangkap pada tingkat yang sama dengan kesalahan yang terjadi. Salah satu solusinya adalah dengan membungkus DDL dalam SQL dinamis:
BEGIN TRY
EXEC(N'ALTER TABLE [dbo].[my_table_name] ADD PRIMARY KEY ([id]);');
END TRY
BEGIN CATCH
IF ERROR_NUMBER() = 1779
BEGIN
--handle expected errors
PRINT 'Primary Key already exists. ';
END
ELSE
BEGIN
--raise other unexpected errors
THROW;
END;
END CATCH;