Spit My Last Error
If you wanna play with the code I used to try things out on your own, here it is:
CREATE TABLE zero_ten (id INT NOT NULL PRIMARY KEY); INSERT dbo.zero_ten ( id ) SELECT 0 AS id UNION ALL SELECT TOP (10) ROW_NUMBER() OVER(ORDER BY 1/0) FROM sys.messages AS m SELECT * FROM dbo.zero_ten AS zt; RETURN; DECLARE c CURSOR LOCAL STATIC FOR SELECT N'DECLARE @atmosphere INT; SELECT @atmosphere = 1/' + RTRIM(zt.id) FROM dbo.zero_ten AS zt; DECLARE @joydivision NVARCHAR(MAX) = N''; DECLARE @errors TABLE ( id INT PRIMARY KEY IDENTITY, error_number INT, error_severity INT, error_state INT, error_message NVARCHAR(MAX) ); OPEN c; FETCH NEXT FROM c INTO @joydivision; WHILE @@FETCH_STATUS = 0 BEGIN BEGIN TRY RAISERROR(@joydivision, 0, 1) WITH NOWAIT; EXEC sys.sp_executesql @joydivision; FETCH NEXT FROM c INTO @joydivision; END TRY BEGIN CATCH INSERT @errors ( error_number, error_severity, error_state, error_message ) SELECT ERROR_NUMBER(), ERROR_SEVERITY(), ERROR_STATE(), ERROR_MESSAGE(); --FETCH NEXT FROM c INTO @joydivision; END CATCH; END; SELECT * FROM @errors AS e; CLOSE c; DEALLOCATE c; GO