سلام دوستان جلسه دوازدهم دوره SQL Server ویژه برنامه نویسان براگزار گردید و گزارش آن بصورتی که مشاهده می کنید در اختیار شما خواننده گرامی قرار می گیرد.
مباحثی که در این جلسه بررسی شد عبارتند از
1- بررسی Updatable View و شرایط مربوط به آن
2- بررسی Partition View و نحوه ایجاد آن
3- آشنایی با نحوه ایجاد Stored Procedureها
4- نحوه کار با پارامترها در Stored Procedure
5- آشنایی با نحوه استفاده از With Result Set هنگام کار با Procedureها
6- نحوه ایجاد Stored Procedureها به صورت Encrypt
7- بررسی Plan Cache و مباحث مربوط به آن
8- نحوه استفاده از TVP هنگام کار با Stored Procedureها
9- بررسی مشکل Parameter Sniffing هنگام کار با Stored Procedure
10- بررسی Dynamic SQL و نحوه پیادهسازی آن در SQL Server
11- نحوه Error Handling در SQL Server
12- آشنایی با دستور Begin Try ….
13- آشنایی با Throw و نحوه تولید خطاهای سفارشی
14- آشنایی اولیه با Function و انواع آن
در طی این جلسه چندین سناریوی کاربردی و مهم بررسی شد مهمترین آنها عبارتند از
سناریو 1 :
در طی این سناریو با مفهوم Plan Cache آشنا شده و با مفهوم Reuse شدن مجدد Plan به ازای Stored Procedureها آشنا شدند این ویژگی یکی از مهمترین مزایای Stored Procedure میباشد.
زمانی که شما یک Stored Procedure ایجاد میکند Plan مربوط به آن به ازای اولین فراخوانی ایجاد شده و کش میشود. حال چنانچه کاربران دیگر این Stored Procedure را فراخوانی کنند SQL Server از این Plan کش شده استفاده خواهد. این مورد باعث خواهد شد که پروسیجرهای شما دیگر درگیر Compile و ساخته شدن Plan نشوند.
در طی این جلسه دوستان با DMV و DMFهای سیستمی مانند
[sql]
sys.dm_exec_cached_plans
sys.dm_exec_sql_text
sys.dm_exec_query_plan
[/sql]
آشنا شدند که بوسیله آن میتوان اشیاء موجود در Plan Cache را بررسی کرده و از وضعیت Reuse مجدد Plan برای کوئریها و Stored Procedureها مطلع شد. برای کسب اطلاعات بیشتر در این خصوص میتوانید از کوئری زیر استفاده کنید.
[sql]
SELECT
P.bucketid,P.usecounts,P.size_in_bytes,
T.text,QP.query_plan
FROM sys.dm_exec_cached_plans P
CROSS APPLY sys.dm_exec_sql_text(P.plan_handle) T
CROSS APPLY sys.dm_exec_query_plan(P.plan_handle) QP
GO
[/sql]
سناریو 2 :
یکی از مهمترین سناریوهای این جلسه بررسی Stored Procedureها با پارامترهای Optional بود این Stored Procedureها اغلب حجم کد نویسی را کاهش داده اما در برخی از مواقع دارای مشکلات کارایی نظیر Parameter Sniffing هستند. قطعه کد زیر نمونهای از این Stored Procedureها را نمایش میدهد.
[sql]
USE AdventureWorks2014
GO
CREATE PROCEDURE usp_GetSalesOrderHeader0 (@SalesOrderID INT,@OrderDate DATETIME)
AS
SELECT * FROM Sales.SalesOrderHeader
WHERE (SalesOrderID=@SalesOrderID OR @SalesOrderID IS NULL)
AND (OrderDate=@OrderDate OR @OrderDate IS NULL)
GO
[/sql]
در طی این جلسه این مشکل بررسی شد و یکی از بهترین روشهای رفع این مشکل برای دوستان ارائه گردید.
سناریو 3 :
در طی این جلسه برنامه SQL Sentry Plan Explorer معرفی و نحوه کار با به طور خلاصه بررسی شد.
برای کسب اطلاعات بیشتر درباره این برنامه میتوانید به این لینک مراجعه کنید.
حتما بر روی دوره غیرحضوری زیر کلیک کنید و مباحث را بصورت کامل مشاهده کنید
منبع: آموزش برنامه نویسی نیک آموز
2 دیدگاه
مجتبی شهریور
سلام
بازم باید بگم خسته نباشید.
همنطور که بیان فرمودین 14 مبحث در این قسمت مورد بررسی قرار گرفته آیا برای هرکدوم یک سناریو اجرا میشه و یا فقط همین 3 سناریو بیان شده کل مطالب را پوشش میده
با تشکر
مسعود طاهری
هر کدام از این مباحث شامل مثال ها و سناریوهایی است که در طی دوره شرح داده و بررسی می شود.