Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Der SQL Server-Änderungstabellenfehler kann nicht abgefangen werden

Fehler, die als Ergebnis einer Batch-Neukompilierung nach verzögerter Namensauflösung auftreten, können nicht auf derselben Ebene abgefangen werden, auf der der Fehler auftritt. Eine Problemumgehung besteht darin, die DDL in dynamisches SQL einzuschließen:

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;