خطای ورود به سیستم SQL Server ازطریق Stored Procedure

سیستم SQL Server

سیستم SQL Server

در این مقاله شما یاد می گیرید که چگونه از یک Stored Procedure به یک SQL Server exception وارد شوید و همچنین خطای ورود به سیستم SQL Server از طریق Stored Procedure را برطرف کنید. برای رفع این مشکل شما را به ادامه ی مطلب و خواندن این مقاله دعئت میکنم. با من همراه باشید …

سیستم SQL Server

جدولی مطابق با روشی که می خواهید exception (استثنا) ذخیره شود ایجاد کنید.

CREATE TABLE [dbo].[ExceptionLog](  
[id] [int] IDENTITY(1, 1) NOT NULL,  
[ErrorLine] [int] NULL,  
[ErrorMessage] [nvarchar](5000) NULL,  
[ErrorNumber] [int] NULL,  
[ErrorProcedure] [nvarchar](128) NULL,  
[ErrorSeverity] [int] NULL,  
[ErrorState] [int] NULL,  
[DateErrorRaised] [datetime] NULL  
)  

stored procedure را ایجاد کنید به صورتی که جزئیات exception را به ExceptionLog table الحاق می کند.

Create Proc [dbo].[spGetErrorInfo] 

as
begin
insert into ExceptionLog(  
ErrorLine, ErrorMessage, ErrorNumber,  
ErrorProcedure, ErrorSeverity, ErrorState,  
DateErrorRaised  
)  
SELECT  
ERROR_LINE () as ErrorLine,  
Error_Message() as ErrorMessage,  
Error_Number() as ErrorNumber,  
Error_Procedure() as 'Proc',  
Error_Severity() as ErrorSeverity,  
Error_State() as ErrorState,  
GETDATE () as DateErrorRaised 
end

یک student table برای تست کردن آن ایجاد کنید.

CREATE TABLE [dbo].[student](  
[Id] [int] IDENTITY(1, 1) NOT NULL,  
[Name] [nchar](10) NULL,  
[City] [nchar](10) NULL  
)  

یک procedure برای الحاق کردن اطلاعات به student tableایجاد کنید.

create proc spStudentInsert
@name varchar(10),
@city varchar(10)  
AS  
BEGIN  
SET NOCOUNT ON;  
BEGIN TRY  
insert into student(Name, City) values(@name, @city)  
END TRY  
BEGIN CATCH  
EXEC dbo.spGetErrorInfo  
END CATCH  
END  

اکنون Stored Procedure را اجرا کنید.

exec spStudentInsert 'Raj', 'Varanasi'

حالا record (رکورد) وارد شده را مشاهده کنید.

select * from student

سیستم SQL Server

اکنون یک exception (استثنا) در روش درج شده (Insert Procedure) ایجاد کنید.

ALTER PROCEDURE[dbo].[spStudentInsert]
@name varchar(10),
@city varchar(10)  
AS  
BEGIN  
SET NOCOUNT ON;  
BEGIN TRY  
Select 1 / 0; // here i am giving hard coded value only for testing purpose if any run time exception occure it will caught into catch block  
insert into student(Name, City) values(@name, @city)  
END TRY  
BEGIN CATCH  
EXEC dbo.spGetErrorInfo  
END CATCH  
END  

اکنون روش ذخیره شده (stored procedure) exec spStudentInsert ‘Raj’,’Varanasi’ را اجرا کنید.

سیستم SQL Server


داریوش فرخی

داریوش فرخی هستم از سال 92 شروع به یادگیری برنامه نویسی و از سال 93 در بخش برنامه نویسی و تولید محتوای سایت mspsoft.com مشغول هستم. فعالیتم نیز بیشتر در زمینه های برنامه نویسی با سی شارپ و asp.net بوده است. اوقات فراغتم را هم غالبا با تماشای فیلم یا بازی های کامپیوتری پر میکنم .

نوشته‌های مرتبط

دیدگاه‌ها

*
*

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.