SQL рд╕рд░реНрд╡рд░ 2011 (Denali) рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛, рдЙрдкрдпреЛрдЧреА рдРрдб-рдСрди
рдереНрд░реЛ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд╣реИред .Net рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд╢рд╛рдпрдж рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣рд╛рдВ рдФрд░ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕ рд╢рдмреНрдж рдХрд╛ рдкреНрд░рдпреЛрдЧ Try ... рдХреИрдЪ рдХрдВрдЯреНрд░реЛрд▓ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрдирд╛ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЬрдм рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдирд┐рдХрдЯрддрдо рдХреИрдЪ рдмреНрд▓реЙрдХ рдХреЛ рдЦреЛрдЬрддрд╛ рд╣реИ рдЬреЛ рдЕрдкрд╡рд╛рдж рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред рдХреИрдЪ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рддреНрд░реБрдЯрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдм рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд╣реАрдВ рднреА рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЧрд▓рд╛, рд╣рдо рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ, рдЬреЛ SQL Server 2000 рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг 2011 рддрдХ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рд╡рд┐рдЪрд╛рд░рд╛рдзреАрди рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП,
tbl_ExceptionTest рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдбрд┐рдЬрд╛рдЗрдирд░ рдХреЛ рдЫреЗрджрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдЖрдк рд╡рд╛рдВрдЫрд┐рдд рддрд╛рд▓рд┐рдХрд╛ (рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
IF EXISTS (SELECT * FROM sys.objects WHERE name = 'tbl_ExceptionTest' AND type = 'U') DROP TABLE tbl_ExceptionTest GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[tbl_ExceptionTest]( [Id] [int] IDENTITY(1,1) NOT NULL, [Phone Number] [int] NOT NULL, CONSTRAINT [PK_tbl_ExceptionTest] PRIMARY KEY CLUSTERED )
рдЕрдЧрд▓рд╛, рд╣рдо рдлрд╝реЛрди рдирдВрдмрд░ рдХреЙрд▓рдо рдореЗрдВ рдЕрдиреБрдЪрд┐рдд рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░рддреЗ рд╕рдордп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХрдИ рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред
SQL Server 2000 (Sphinx) рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ
рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ @@ ERROR рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
SQL Server 2000 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рджрд┐рдиреЛрдВ рдореЗрдВ, рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЪрд░ @@ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕ рд╕рдордп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдкреНрд░рдЧрддрд┐рд╢реАрд▓ рдФрд░ рдХреБрд╢рд▓ рддрд░реАрдХрд╛ рдерд╛ред рдпрд╣ рдЪрд░ рдкрд┐рдЫрд▓реЗ рдЕрдВрддрд┐рдо рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдкреВрд░реНрдгрд╛рдВрдХ рддреНрд░реБрдЯрд┐ рдорд╛рди рдХреЛ рд▓реМрдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдерд╛ред рддреНрд░реБрдЯрд┐ рдорд╛рди рдпрд╛ рддреЛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдпрд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ 0 рдиреЗ рдСрдкрд░реЗрд╢рди рдХреА рд╕рдлрд▓рддрд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЪрд░ рдХрд╛ рдореВрд▓реНрдп рдмрджрд▓ рдЧрдпрд╛ред
рдЖрдЗрдП @@ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦреЗрдВред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рдЙрджреНрджреЗрд╢реНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкрд┐рдЫрд▓реЗ рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рд╣рдо рдЬрд╛рдирдмреВрдЭрдХрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдкреИрджрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рд╕реЗ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВред рдпрджрд┐ рддреНрд░реБрдЯрд┐ рдорд╛рди рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдПрдХ рд╕рд╛рд░реНрдердХ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рд╕рд╣реЗрдЬреЗрдВред
рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ
Msg 515, рд╕реНрддрд░ 16, рд░рд╛рдЬреНрдп 2, рдкрдВрдХреНрддрд┐ 26 рд╕реНрддрдВрдн рдореЗрдВ рдорд╛рди рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ 'рдлрд╝реЛрди рдирдВрдмрд░', рддрд╛рд▓рд┐рдХрд╛ 'tempdb.dboред # TblExceptionTest _____ 000000000023'; рдХреЙрд▓рдо рдирд▓ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред INSERT рд╡рд┐рдлрд▓ред рдмрдпрд╛рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред Msg 50000, рд▓реЗрд╡рд▓ 16, рд╕реНрдЯреЗрдЯ 1, рд▓рд╛рдЗрди 43 [рдлреЛрди рдирдВрдмрд░] рдореЗрдВ рд╢реВрдиреНрдп рдорд╛рди рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИрд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдкреВрд░рд╛ рд▓реЗрдирджреЗрди рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреБрдЫ рднреА рджрд░реНрдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
@@ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдиреБрдХрд╕рд╛рди
- рдЪрд░ рдХрд╛ рдореВрд▓реНрдп @@ рддреНрд░реБрдЯрд┐ рдЕрдиреБрд░реЛрдз / рдХрдорд╛рдВрдб рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
- рдЪреВрдВрдХрд┐ @@ рддреНрд░реБрдЯрд┐ рд▓рдЧрд╛рддрд╛рд░ рдмрджрд▓ рд░рд╣реА рд╣реИ, рд╣рдо рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреЛ рдмрдЪрд╛рдиреЗ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЪрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реИрдВред
- рд╕рд╛рде рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЗ рддрд╛рд░реНрдХрд┐рдХ рдЕрд░реНрде рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде, рддрдХрдиреАрдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред
рдпрджрд┐ рдЖрдк @@ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдФрд░ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ
@@ рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред
рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ @@ TRANCOUNT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдпрд╣ рдЪрд░ рдЙрд╕ рдЪрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕ рд╕рдордп рдЪрд░ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИред рд╡рд┐рд╡рд░рдг рд╕реЗ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рд▓рдЧрднрдЧ @@ ERROR рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЕрд░реНрдерд╛рддред рд▓реЗрдирджреЗрди рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рд▓рдЧрд╛рддрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрдиред рдпрд╣ рдлрд┐рд░ рд╕реЗ рд╕рдордп рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ рдкрд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ BEGIN TRANSACTION рдХреЙрд▓ 1 рд╕реЗ @@ TRANCOUNT рдмрдврд╝ рдЬрд╛рддреА рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ COMMIT TRANSACTION рдХреЙрд▓ 1 рд╕реЗ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред ROLLBACK рдЯреНрд░рд╛рдВрд╕рдХреНрд╢рди рд╕реЗ @@ TRANCOUNT рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рдкреНрд░рд╡реЗрд╢ рдХреЗрд╡рд▓ рддрднреА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдорд╛рди @@ TRANCOUNT 0 рдкрд░ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ @@ TRANCOUNT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рд╣рдо рдмрдВрдж рд▓реЗрдирджреЗрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрди-рджреЗрди рдХреЛ рдирд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдЕрд╕реНрддрд┐рддреНрд╡ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред
@@ TRANCOUNT рдХреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП MSDN рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВред
рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ @@ ROWCOUNT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдпрд╣ рдЪрд░ рдХреНрд╡реЗрд░реА / рдХрдорд╛рдВрдб рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд┐рдЫрд▓реЗ рджреЛ рдХреА рддрд░рд╣ рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЖрдЧреЗ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдореЗрдВ рдордзреНрдпрд╡рд░реНрддреА рдкрд░рд┐рдгрд╛рдо рдмрдЪрд╛рддреЗ рд╣реИрдВред
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
If OBJECT_ID('tempdb..
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрджрд┐ рд╕рдореНрдорд┐рд▓рд┐рдд рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рд╢реВрдиреНрдп рд╣реИ, рддреЛ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреНрд░рдо рдореЗрдВ рдирд╣реАрдВ рд╣реИред
@@ ROWCOUNT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП
, MSDN рдкрдврд╝реЗрдВред
SQL Server 2005/2008 (рдпреБрдХреЛрди / рдХреИрдЯрдордИ) рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ
SQL Server 2005 рдХреЛ рдмрд╛рдЬрд╝рд╛рд░ рдореЗрдВ рдкреЗрд╢ рдХрд░рдиреЗ рдФрд░ SQL Server 2008 рдореЗрдВ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, TSql рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рдПрдХ рдирдпрд╛ рдкреНрд░рдпрд╛рд╕ рд╣реИ ... рдкрдХрдбрд╝реЛ рдмреНрд▓реЙрдХред рдЕрдм рд▓реЗрдирджреЗрди рдХреЗ рд╕рдВрджрд░реНрдн рдХреЛ рдЦреЛрдП рдмрд┐рдирд╛ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИред
Try ... Catch block рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгред
If OBJECT_ID('tempdb..
рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд╕рдВрдХреЗрддреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
Msg 50,000, рд▓реЗрд╡рд▓ 16, рд╕реНрдЯреЗрдЯ 1, рд▓рд╛рдЗрди 45 [рдлреЛрди рдирдВрдмрд░] рдореЗрдВ рд╢реВрдиреНрдп рдорд╛рди рдбрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИрдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВ, рдЗрд╕ рдмрд╛рд░ рдХреЗрд╡рд▓ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдореЗрдВ рдЬреЛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рд╡рд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред SQL рд╕рд░реНрд╡рд░ рдиреЗ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╢рд░реНрдордирд╛рдХ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ рд╣реИред рдПрдХреНрдЬрд╝рд┐рдХреЗрдмрд▓ рдХреЛрдб рдХреЛ рдПрдХ рдХреЛрд╢рд┐рд╢ рдмреНрд▓реЙрдХ рдореЗрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЛ рдкрдХрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХ рдореЗрдВ рдлрдВрд╕рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдо рд╕рд╛рдл рдФрд░ рд╕реНрдкрд╖реНрдЯ рдХреЛрдб рд╣реИред рдпрджрд┐ рд╕рднреА рд╡рд╛рдВрдЫрд┐рдд рдХреЛрдб рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдкрд╛рд░рд┐рдд рд╣реЛ рдЧрдП, рддреЛ рдХреИрдЪ рдмреНрд▓реЙрдХ рд╕реЗ рдХреЛрдб рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдХреИрдЪ рдмреНрд▓реЙрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЙрдЪрд┐рдд рд╕реНрддрд░ рдкрд░ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп:
- ERROR_NUMBER
- ERROR_SEVERITY
- ERROR_STATE
- ERROR_LINE
- ERROR_PROCEDURE
- ERROR_MESSAGE
рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдХреИрдЪ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмреНрд▓реЙрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
Begin Catch
рдЕрдм рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдпрд╣ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓рддреА рд╣реИ:

RaiseError рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдиреБрдХрд╕рд╛рди
1 рдЕрдЧрд░ рд╣рдореЗрдВ рдпрд╛рдж рд╣реИ рдХрд┐ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдиреЗ рдХреИрдЪ рдмреНрд▓реЙрдХ рдореЗрдВ рдХреНрдпрд╛ рджрд┐рдЦрд╛рдпрд╛ рдерд╛, рддреЛ рд╣рдордиреЗ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдХрд┐ рдпрд╣ рд▓рд╛рдЗрди рдирдВрдмрд░ 45 рдХреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд▓рд╛рдЗрди рдирдВрдмрд░ 24 рдкрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реБрдИ, рдЗрд╕рд▓рд┐рдП рдЬрд╣рд╛рдВ рдпрд╣ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛
#TblExceptionTest ([рдлрд╝реЛрди рдирдВрдмрд░]) рдорд╛рди (рд╢реВрдиреНрдп) рдбрд╛рд▓реЗрдВрдЬрдмрдХрд┐ ERROR_LINE () рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрд╢рд╛ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд╛рди рджреЗрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рддреНрд░реБрдЯрд┐ рд╣реБрдИ рдереАред рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рдо рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдпрд╣ рд╣реЛрдЧрд╛:
Begin Catch Begin Rollback Transaction TranExcpHandlingTest_2005_2008 DECLARE @errNumber INT = ERROR_NUMBER() DECLARE @errMessage VARCHAR(500) = 'Attempt to insert null value in [Phone Number] is not allowed' RAISERROR('Error Number: %d, Message: %s', 16, 1, @errNumber, @errMessage) End End Catch
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, SQL рд╕рд░реНрд╡рд░ рдЗрдВрдЬрди рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛:

рдЬрд┐рд╕рд╕реЗ рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ RaiseError рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдерд╛рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЕрдкрд╡рд╛рдж рд╣реБрдЖред
2 RaiseError рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЕрдЧрд▓рд╛ рджреЛрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдХреЙрд▓ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЕрдкрд╡рд╛рдж рдХреЛ рдлрд┐рд░ рд╕реЗ рдЙрдард╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ рдХреИрдЪ рдмреНрд▓реЙрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ
Begin Catch Begin Rollback Transaction TranExcpHandlingTest_2005_2008 RAISERROR(515, 16, 1) End End Catch
рдпрд╣ рдкреНрд░рд╛рдкреНрдд рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:
Msg 2732, рд╕реНрддрд░ 16, рд░рд╛рдЬреНрдп 1, рдкрдВрдХреНрддрд┐ 46 рддреНрд░реБрдЯрд┐ рд╕рдВрдЦреНрдпрд╛ 515 рдЕрдорд╛рдиреНрдп рд╣реИред рд╕рдВрдЦреНрдпрд╛ 2147483647 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ 13000 рд╕реЗ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрд╣ 50,000 рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдЗрд╕рдХрд╛ рдПрдХ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдирдИ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддреНрд░реБрдЯрд┐ рд╕рдВрдЦреНрдпрд╛
sys рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
ред рд╕рдВрджреЗрд╢ ред
RaiseError рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИ:
SQL рд╕рд░реНрд╡рд░ 2011 (Denali) рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ
RaiseError рдлрд╝рдВрдХреНрд╢рди рдХреА рдЙрдкрд░реНрдпреБрдХреНрдд рдХрдорд┐рдпрд╛рдВ
рдирдП рдереНрд░реЛ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд░ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред
RaiseError рдлрд╝рдВрдХреНрд╢рди рдХреА рдкрд╣рд▓реА рдЦрд╛рдореА, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдмрддрд╛рдпрд╛ рдерд╛, рддреНрд░реБрдЯрд┐ рдХреА рд╕рдЯреАрдХ рд░реЗрдЦрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ рд╣реИред рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХрд╣рд╛рдБ рд╕реЗ рд╣реБрдИ рд╣реИ рд╣рдо рдереНрд░реЛ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд╣рдо рдереНрд░реЛ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреИрдЪ рдмреНрд▓реЙрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
Begin Catch Begin Rollback Transaction TranExcpHandlingTest_2011; THROW End End Catch
рдЖрдЙрдЯрдкреБрдЯ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:

рдпрд╣ рд╡рд╣реА рд╣реИ рдЬрд╣рд╛рдБ рддреНрд░реБрдЯрд┐ рд╣реБрдИред рдЦреИрд░, рдпрд╣ рдЕрдм рддрдХ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рджреВрд╕рд░рд╛ рджреЛрд╖ рдпрд╣ рдерд╛ рдХрд┐ RaiseError рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ RAISE ERROR рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрдЦреНрдпрд╛ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ, рдЬреЛ sys.messages рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдереНрд░реЛ рдХрдорд╛рдВрдб рдпрд╣ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрдЦреНрдпрд╛ sys.messages рд╕рд┐рд╕реНрдЯрдо рдЯреЗрдмрд▓ рдХреА рд╕реАрдорд╛ рд╕реЗ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╕рдВрдЦреНрдпрд╛ 50,000 рд╕реЗ 2147483647 рд╕рдорд╛рд╡реЗрд╢реА рд╕реАрдорд╛ рддрдХ рд╕реЗрдЯ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдлрд┐рд░, рд╣рдо рдирдП рдЬреНрдЮрд╛рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреИрдЪ рдмреНрд▓реЙрдХ рдХреЛ рдмрджрд▓ рджреЗрдВрдЧреЗред
Begin Catch Begin Rollback Transaction TranExcpHandlingTest_2011; THROW 50001,'Attempt to insert null value in [Phone Number] is not allowed',1 End End Catch
рдЕрдкрд╡рд╛рдж рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛
Msg 50001, рд▓реЗрд╡рд▓ 16, рд╕реНрдЯреЗрдЯ 1, рд▓рд╛рдЗрди 45 [рдлреЛрди рдирдВрдмрд░] рдореЗрдВ рд╢реВрдиреНрдп рдорд╛рди рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИрд╡рд░реНрддрдорд╛рди рдореЗрдВ, SQL рд╕рд░реНрд╡рд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рд╕рднреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЖрдЬрд╝рдорд╛рдХрд░ рдирд╣реАрдВ рдкрдХрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ ... рдмреНрд▓реЙрдХ рдкрдХрдбрд╝реЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
- рд╕рд┐рдВрдЯреЗрдХреНрд╕ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ SSMS рдореЗрдВ рдХреНрд╡реЗрд░реА рд╕рдВрдкрд╛рджрдХ рджреНрд╡рд╛рд░рд╛ рдкрдХрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдЧрд▓рдд рд╡рд╕реНрддреБ рдирд╛рдо
рдпрджрд┐ рдЖрдк рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:
Begin Try
рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдпреЛрдЬрдирд╛ рдХрд╛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛:
Msg 208, рд╕реНрддрд░ 16, рд░рд╛рдЬреНрдп 0, рдкрдВрдХреНрддрд┐ 3 рдЕрдорд╛рдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╛рдо 'tblInvalid'редрдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд░реЛрдХрдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИред
рд▓реЗрдХрд┐рдиред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдереЛрдбрд╝реА рд╕реА рдЪрд╛рд▓ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдПрд╣рд╕рд╛рд╕ рдХреИрд╕реЗ рдХрд░реЗрдВред рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рджреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐рдпрд╛рдБ рдмрдирд╛рдирд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ ... рдмреНрд▓реЙрдХ рдХреЛ рдкрдХрдбрд╝реЗрдВ рдФрд░ рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝реЗрдВред рдЕрдкрдиреА рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рд▓рд┐рдкрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдЬрдм
ExternalStoredProc рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ:
In catch block of external stored procedure.... throwing the exception (1 row(s) affected) Msg 208, Level 16, State 1, Procedure usp_InternalStoredProc, Line 8 Invalid object name 'tblInvalid'.
рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреИрдирд▓ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛:

рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП!
рдЕрдм рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреИрд╕реЗ рдХреЛрдб рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 2 рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реИрдВ:
usp_InternalStoredProc рдФрд░
usp_ExternalStoredProc ред
Usp_InternalStoredProc рдореЗрдВ рд╣рдо
рдмрд┐рдирд╛ рдХрд┐рд╕реА рддрд╛рд▓рд┐рдХрд╛ рдХреЗ #tblInnerTempTable рдореЗрдВ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреЛ рдмрд╛рд╣рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕реНрдерд┐рдд рдмрд╛рд╣рд░реА рдХреИрдЪ рдмреНрд▓реЙрдХ рджреНрд╡рд╛рд░рд╛ рдкрдХрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд▓рд╛рдЗрди рдФрд░ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрд╛рда рд╣рдорд╛рд░реА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдЯреАрдХ рд╕реНрдерд╛рди рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИред
рдПрдХ рдЕрд░реНрдзрд╡рд┐рд░рд╛рдо рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрдЧрд╛рдореА THROW рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдмрдВрдж рдирд╣реАрдВ рдХрд░рдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред THROW рдХрдорд╛рдВрдб рдХрд╛ рдПрдХ рдирдпрд╛ рд╕реЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛, рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
RO THROW тАЩрдХреЗ рдкрд╛рд╕ рдЧрд▓рдд рд╕рд┐рдВрдЯреИрдХреНрд╕редTHROW рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА MSDN рд╕реЗ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред
рдЪрдХреНрд░ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг:
MS SQL рд╕рд░реНрд╡рд░ 2011: рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рдбреЗрдЯрд╛рдмреЗрд╕ , рдирдпрд╛ рдЕрдиреБрдХреНрд░рдо рдСрдмреНрдЬреЗрдХреНрдЯ , рдСрдлрд╕реЗрдЯ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ , рдПрд░рд░ рд╣реИрдВрдбрд▓рд┐рдВрдЧ , рд░рд┐рдЬрд▓реНрдЯ рд╕реЗрдЯ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде , SSMS рдореЗрдВ рдирдпрд╛ ред