مطالب آموزشی در این جلسه:
جلسه اول: VIEW
- بررسی مفهوم VIEW و مزایای استفاده از آن
- طریقه ایجاد VIEW و حذف و فراخوانی آن
- به روز رسانی VIEW و قوانین آن
- VIEW تو در تو
- بررسی ویژگی ها و محدودیت های استفاده از VIEW
- بررسی تنظیمات SCHEMA BINDING و CHECK OPTION در VIEW
- بررسی کوئری های مرتبط با VIEW
- طراحی VIEW در SSMS
- پروسیجرها و جداول و ویوهای سیستمی sp_refreshview, sp_refreshsqlmodule, sp_helptext, sys.objects, sys.views, sys.system_views, sys.all_views, INFORMATION_SCHEMA_VIEWS, sys.sql_modules
جلسه دوم: توابع رشته ای کاربردی (2)
- تابع SUBSTRING
- تابع PATINDEX
- توابع LOWER , UPPER
- تابع FORMAT
- تابع REPLICATE
- توابع STR, SPACE
- تابع REVERSE
- تابع STUFF
- تابع STRING_SPLIT (همراه با توضیحات درباره آپشن اضافه شده در ورژن 2022 SQL Server)
- تابع STRING_AGG
- تابع CONCAT_WS
- تابع CHOOSE
- تابع TRANSLATE
- توابع SOUNDEX, DIFFERENCE
- تابع COL_LENGTH
- تابع QOUTENAME
- تابع NULLIF
- چگونگی درج کارکترهای خاص در یک رشته
جلسه سوم: Execution Plan
جلسه چهارم: Stored Procedure
- ایجادو ویرایش Stored Procedure ها وانواع فراخوانی آنها
- پارامترهای ورودی وخروجی در پروسیجرها
- TVP (Table Value Parameter)
- درج، ویرایش ،حذف و پرس و جوی داده ها از طریق ارسال پارامترها به SPها
- نحوه ارتباط اپلیکیشن با دیتابیس از طریق Stored Procedure جهت انجام اعمال DML و SELECT و رویت گزارشات
- کاربرد INSERT..EXEC در SPها
- بررسی فواید پرفورمنسی استفاده از SPها از نظر ثبت محتوای کوئری ها در Plan Cache
- بررسی پروسیجرهای سیستمی
- بررسی انواع کدهای کمکی مربوط به Stored Procedure ها
- بررسی sp_executesql
- نحوه ذخیره نتایج SPها در یک جدول موقت (و بررسی خطاهای رایج)
- مدیریت خطاها در SQL Server با استفاده از ساختار TRY - CATCH
- توایع ERROR_NUMBER, ERROR_SEVERITY, ERROR_STATE, ERROR_LINE, ERROR_PROCEDURE, ERROR_MESSAGE
- معرفی متغیرهای سیستمی ERROR@@ و NESTLEVEL@@
- بررسی دستورات DBCC FREEPROCCACHE, DBCC DROPCLEANBUFFER
- بررسی پروسیجرها و ویوها و جداول سیستمی INFORMATION_SCHEMA_ROUTINS, sys.procedures, xp_fileexist, sp_helptext, sys.dm_exec_cached_plans, syscomments, sysobjects, sys.extended_properties, sys.dm_exec_sql_text, sys.all_objects
- پروسیجرهای بازگشتی (Recursive Procedures)
- بررسی استفاده از Return در Procedure
- Temporary Stored Procedures (پروسیجرهای موقت)
- فراخوانی یک پروسیجر از پروسیجر دیگر به همراه پارامترهای ورودی اش
- بررسی پروسیجر سیستمی sp_procoption برای خودکارسازی اجرای پروسیجر در هنگام استارت SQL Server
جلسه پنجم: توابع تاریخ و زمان و توابع پرکاربرد دیگر
- بررسی توابع GETDATE, SYSDATETIME, CURRENT_TIMESTAMP, GETUTCDATE, SYSUTCDATETIME , SYSDATETIMEOFFSET,SWITCHOFFSET, TODATETIMEOFFSET جهت تاریخ سرور جاری
- توابع YEAR, MONTH, DAY, TIME
- بررسی ویژگی SET DATEFIRST
- بررسی ویژگی SET DATEFORMAT
- توابع DATENAME, DATEPART, DATEADD, DATEDIFF
- بررسی انواع توابع DATEFROMPARTS
- بررسی توابع DATETRUNC, DATE_BUCKET از SQL Server 2022
- تابع ISDATE
- تابع EMONTH
- روش های ایجاد تاریخ شمسی
- بررسی برخی از توابع مهم از 25 تابع ریاضی موجود مانند: RAND, ROUND, CEILING, FLOOR, ABS, SIGN, POWER, SQRT, SQUARE
- تابع ISNUMERIC
- توابع FOR XML RAW, FOR XML AUTO, FOR XML PATH, (ROOT, XMLNAMESPACES, ELEMENTS, XSINIL, TYPE Options)
- بررسی متغیرهای سیستمی MAX_PRECISION@@ و :MAX_CONNECTIONS@@
- توابع OBJECT_DEFINITION, DB_ID(), DB_NAME(), OBJECT_ID(), OBJECT_NAME و جدول سیستمی sys.objects
- توابع FILE_IDEX, FILE_ID
- توابع COL_NAME, COLUMNPROPERTY
- تابع APPROX_COUNT_DISTINCT
- تابع PARSENAME
- نکاتی چند درمورد تابع NEWID
- بررسی توابع GREATEST, LEAST, GENERATE_SERIES از SQL Server 2022
جلسه ششم: Service Accounts
- بررسی System Service Account ها (Network Service - Local Service - Local System)
- نحوه ایجاد User Defined Service Account
- نحوه ایجاد Domain User Defined Account در Active Directory
- بررسی Virtual Service Account ها
- نحوه ایجاد Managed Service Account (MSA) بصورت عملیاتی توسط پاورشل در Active Directory
- نحوه ایجاد Group Managed service Account (GMSA) بصورت عملیاتی توسط پاورشل در Active Directory
- xp_instance_regread
جلسه هفتم: تنظیمات امنیتی در سطح بیرونی SQL Server
- بررسی ملزومات اساسی Connection String و بررسی انواع Connection Stringها
- Encrypt کردن Connection String به دوروش استفاده از نرم افزار aspnet_regiis و همینطور کدنویسی سی شارپ
- برخی مفاهیم مهم در اپلیکیشن ها در ارتباط با دیتابیس
- تابع ORIGINAL_DB_NAME
- نقش Portهای سرویس ها در SQL Server
- ایجاد رول های ورودی (Inbound Rules) و شرح تنظیمات آن در Firewall
- بررسی برخی ملزومات اتصال ریموت به Database Engine
- بررسی سرویس SQL Server Browser
- بررسی SP_Configure جهت اضافه شدن ویژگی های پیشرفته به SQL Server
- آگاهی از خطرات پروسیجر XP_cmdshell
- پروتکل TDS و روش های جلوگیری از Sniffing
- ایجاد Self-Signed Certificate جهت Encrypt کردن ترافیک شبکه بین کلاینتها و سرور در LAN
- روش Import کردن SSL Certificate در خود SQL Server در ورژن 2019
- IP Security
- تنظیمات گام به گام IPSec جهت Encrypt کردن ترافیک شبکه و انتقال داده ها بین کلاینتها و سرور
- ویوهای سیستمی sys.dm_exec_sessions, sys.dm_tcp_listener_stats, sys.dm_exec_connections و پروسیجر سیستمی sp_configure
جلسه هشتم: نمای کلی PAGE
- نکاتی در مورد Trace کردن Flagها و عملکرد آنها
- DATA PAGE
- بررسی دستورات DBCC PAGE و DBCC IND و توابع سیستمی موجود در جهت بدست آوردن اطلاعات مربوط به page و extent دیتابیس و دستور DBCC TRACESTATUS
- IAM PAGE
- TEXT/IMAGE PAGE
- بررسی موارد مربوط به Row Overflow Storgeو Allocation Unit
- مدیریت تخصیص Extent و فضای آزاد
- PFS PAGE
- GAM PAGE - SGAM PAGE
- INDEX PAGE
- ۱۱. بررسی ویوهای سیستمی sys.allocation_units, sys.dm_db_page_info, sys.system_internals_allocation_units وتابع سیستمی fn_physLocFormatter
جلسه نهم: User Defined Functions
- Scalar-Valued Functions
- Inline table-Valued Functions (TVF)
- بررسی تفاوت های بین UDF ها و Procedure ها
- بررسی تنظیمات ویژگی SCHEMABINDING در توابع
- بررسی تنظیمات آپشن RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT در توابع
- Multi Statement Tabled-Valued Functions (MSTVF)
- بررسی عملگر APPLY همراه با Derived Table و Function
- CROSS APPLY - OUTER APPLY
- بررسی نکات مهم مربوط به Performance هنگام استفاده از عملگر APPLY
- متغیر سیستمی PROCID@@
- بررسی ویژگی پرفورمنسی Scalar UDF Inlining که توسط IQP در ورژن 2019 SQL Server ارائه شده
- بررسی جداول و ویوهای سیستمی sys.sql_modules و sys.dm_exec_function_stats و INFORMATION_SCHEMA.ROUTINES
جلسه دهم: مفاهیم اصلی امنیت
- روش های احراز هویت ویندوزی و SQL ای (Windows Authentication - SQL Server Authentication)
- روش های ایجاد Loginهای ویندوزی و SQL ای همراه با تمام Optionهایشان
- بررسی Policyهای مرتبط با لاگین
- روش های ایجاد User و نگاشت کردن آن به Login
- بررسی قوانین مربوط به لاگین ها و یوزرها
- بررسی انواع Securableها و Principleها
- بررسی مفصل Permissionها و انواع دسترسی در سطح Objectهای Database
- بررسی مجوزها در سطح ستون جداول
- بررسی برخی Permissionهای سطح سرور جهت دسترسی به Objectهای Database
- بررسی دستورات اعمال و لغو و منع دسترسی (GRANT, REVOKE, DENY)
- ارث بری Permissionها
- نکات امنیتی مربوط به Schema و مباحث مربوط به ارث بری و مالکیت در این محدوده
- بررسی کوئری های مفید درباره Permissionها
- بازگرداندن اطلاعات درخصوص تنظیمات Login Policy
- تابع Permissions
- بررسی Fixed Database Roleها و User Database Roleها
- ایجاد Roleهای سفارشی و اعطای Permission به آنها و انجام تغییرات در آنها
- بررسی کوئری های مفید درباره Roleها
- ایجاد Application Role و بررسی آنها در یک Application مرتبط با پایگاه داده
- بررسی تابع HAS_PERMS_BY_NAME
- غیرفعال کردن لاگین SA و ایجاد یک لاگین دیگر با همان دسترسی Admin
- روش های دسترسی به لاگین SA و یا ایجاد مجدد یک لاگین sysadmin درصورت فراlوش کردن رمزعبور یا غیرفعال بودن لاگین SA
- بررسی تابع LoginPropperty و به دست آوردن مشخصات لاگین ها
- بررسی تابع PWDCOMPARE و تست امنیتی Password
- بررسی Orphan Userها
- بررسی SID در سطح لاگین و یوزر
- جلوگیری از حملات Brute Force
- انتقال لاگین ها از سرور خود به سرور دیگر
- انتقال لاگین ها از سرور خود به سرور دیگر همراه با SID
- انتقال لاگین ها با تمام Oprtionهای مربوط به لاگین از سرور خود به سرور دیگر
- انتقال لاگین ها از سرور خود به سرور دیگر همراه با map شدن آنها با User Database ها مرتبط
- انتقال لاگین ها از سرور خود به سرور دیگر همراه با اضافه کردن آنها در Server Roleهایی که در سرور مبداء عضو آن بودند
- انتقال Permissionهای یوزرها در سطح Object از سرور خود به سرور مقصد
- بررسی و رفع خطای Mapping Error (روش قدیم و روش جدید)
- ایجاد یک پروسیجر برای remap همه یوزرهای یک دیتابیس به لاگین های متناظر
- ایجاد یک پروسیجر برای remap همه یوزرهای تمام دیتابیسهای یک Instance به لاگین های متناظر
- بررسی توابع CURRENT_USER, SID_BINARY, HAS_DBACCESS, USER_ID, SUSER_NAME, SUSER_ID, SYSTEM_USER, SESSION_USER, CURRENT_REQUEST_ID, CURRENT_TRANSACTION_ID, DATABASE_PRINCIPAL_ID, ORIGINAL_LOGIN, IS_MEMBR
- مالک دیتابیس ها و تغییر آنها
- بررسی یوزرهای dbo, guest
- ایجاد یوزرهای بدون لاگین
- جعل هویت (Impersonation) در سطح یوزرهای بدون لاگین
- واگذار کردن مجوزها از یک یوزر به یوزر دیگر
- جعل هویت (Impersonation) در سطح لاگین ها
- بررسی آپشن CALLER در سطح لاگین ها
- EXECUTE AS Context Switch و جعل هویت در ماژول ها EXECUTE AS (Omitted, OWNER, SELF, CALLER, User_Name, login_Name)
- تمرین نوشتاری درباره ایجاد مجوز TRUNCATE به یوزر توسط EXECUTE AS در ماژول ها
- ایجاد Contained Database ها و نحوه ارتباط با این نوع دیتابیس ها
- انتقال CDBهای یک سرور به سرور دیگگر همراه با حفظ ارتباط لاگین های User Databaseها
- زنجیره مالکیت (Ownership) در سطح Object و Schema
- زنجیره مالکیت (Ownership) در سطح پایگاه داده
- تمهیدات و انجام پیش نیازهای لازم برای حذف یک یوزر جهت عدم برخورد به خطاهای مختلف
- تمهیدات و انجام پیش نیازهای لازم برای حذف یک لاگین جهت عدم برخورد به خطاهای مختلف
- پروسیجرهای سیستمی xp_instance_regread, xp_loginconfig, xp_instance_regwrite, sp_addlogin, sp_defaultdb, sp_defaultlanguage, SP_changedbowner, SP_adduser, sp_grantdbaccess, sp_helplogins, sp_dropuser, sp_helpdb, sp_revokelogin, sp_grantlogin, sp_denylogin, sp_revokedbaccess, sp_helpntgroup, sp_helpuser, sp_helprotect, sp_addrolemember, sp_droprolemember, sp_addrole, sp_droprole, sp_helpdbfixedrole, sp_dbfixedrolepermission, sp_helprole, sp_helprolemember, sp_password, sp_change_users_login, sp_validatelogins, sp_change_users_login, sp_migrate_user_to_contained, sp_changeobjectowner, sp_MShasdbaccess, sp_addapprole, sp_setapprole, sp_unsetapprole, sp_dropapprole, sp_approlepassword
- ویوها و توابع سیستمی sys.dm_exec_sessions, SYS.sql_logins, sys.database_principals, sys.server_principals, sys.logins, fn_builtin_permissions, fn_my_permissions, sys.database_permissions, sys.endpoints, sys.server_permissions, sys.database_role_members, SYS.SERVER_ROLE_MEMBERS, sys.dm_db_uncontained_entities, sys.sysusers
جلسه یازدهم: ساختار Heap و Index
- بررسی انواع ساختارهای ذخیره سازی
- بررسی مفهوم Index و معرفی انواع ایندکس (و معرفی پروسیجر سیستمی sp_helpindex)
- جدول Heap و بررسی معایب و مزایای آن
- مقایسه دقیق جداول Heap با جداول ایندکس دار به هنگام اعمال جستجو و دستورات DML
- بررسی دقیق مشکل Forwarding Point در جدول هیپ
- بررسی مشکل عدم تخمین مناسب PFS Page جهت اختصاص فضای خالی به رکوردها در جدول هیپ
- واکاوی ساختار حداول دارای ایندکس
- اپراتورهای Index seek و Index Scan و Table Scan در پلن اجرایی
جلسه دوازدهم: Clustered Index
- بررسی ساختار Clustered Index
- نکات پرفورمنسی مربوط به ایندکس کلاسترد
- بررسی Unique Clustered Index
- Primary Key و چگونگی مدیریت آن توسط Unique Clustered Index
- چگونگی ایجاد درخت متوازن کلاسترد
- مزایا و معایب استفاده از GUID جهت کلید اصلی (نوع داده UNIQUEIDENTIFIER)
- انتقال جداول هیپ و کلاسترد از یک فایل گروپ به فایل گروپی دیگر
- بررسی تابع سیستمی INDEXPROPERTY
- بررسی ویوهای سیستمی sys.sm_sb_database_page_allocations, sys.dm_db_physical_stats
جلسه سیزدهم: NonClustered Index
- بررسی ساختار NonClustered Index
- نکات پرفورمنسی مربوط به ایندکس NonClustered
- ایجاد NonClustered برروی ساختار Heap
- ایجاد NonClustered برروی ساختار Clustered
- انتقال ایندکس های NonClustered از یک Filegroup به Filegroup مجزای دیگر (در جدول کلاسترد و جدول هیپ)
- ایجاد Primary Key از نوع NonClustered
جلسه چهاردهم: دیتابیس های سیستمی
- ررسی ساختار دیتابیس TempDB و کارکرد آن
- نکات پرفورمنسی مهم درباره دیتابیس TempDB
- رفع مشکل Latch Contention
- مقایسه لاگ های ایجاد شده در دیتابیس TempDB و دیتابیس های دیگر به ازای عملیات DML
- بررسی بهبودهای پرفورمنسی در دیتابیس TempDB در ورژنهای 2019 و 2022 SQL Server
- بررسی و کارکرد دیتابیس Master
- بررسی کارکرد دیتابیس Model
- بررسی کارکرد دیتابیس msdb
- بررسی دیتابیس های Resource و Distribution
- جداول و ویوهای سیستمی sys.dm_db_sesession_space_usage, sys.dm_db_pge_info, sys.dm_db_exec_sessions, sys_fn_PageResCracker, sys.dm_os_waiting_tasks, sys.dm_db_task_space_usage, sys.dm_exec_query_pln, sys_dm_exec_sql_text, sys.dm_exec_requests, sys.dm_db_file_space_usage, sys.databases, sysobjects, sys.servers, sys.dm_io_virtual_file_stats, sys.master_files, sys.sysperfinfo
جلسه پانزدهم: آبجکت های موقت (جداول موقت و متغیرهای جدولی)
- بررسی ویژگی های آبجکت های موقت
- جداول موقت محلی (Local Temporary tables)
- جداول موقت سراسری (Global Temporary Tables)
- بررسی عملکرد جداول موقت و بهبود آن
- متغیرهای جدولی (Table Variables)
- مقایسه عملکردی جدول موقت و متغیر جدولی
- مقایسه تعداد لاگ تولید شده در هنگام ایجاد متغیر جدولی و جدول موقت
- خطایابی در بخشهای مختلف تراکنش توسط متغیر جدولی
- پارامتر نوع داده جدولی (Table Valued Parameter) TVP
- درج به یکباره جزئیات رکوردهای جدول اصلی از یک اپلیکیشن آزمایشی در دیتابیس توسط TVP تحت ماژول پروسیجر
- بررسی روش های جایگزین TVP برای انتقال رکوردهای زیاد از اپلیکیشن (استفاده از تابع String_Split و استفاده از کد Json)
- جداسازی داده های تکراری و غیرتکراری از یک منبع ورودی در جداولی مجزا توسط TVP
- استفاده از TVP درون TVF برای پاس دادن چند مقدار به آن
- بررسی بهبودهای پرفورمنسی در SQL Server 2019
- بررسی تخمین تعداد ردیفها در ورژن های 2017 به قبل و 2019 برای جداول موقت و متغیرهای جدولی
- مساله کش شدن جداول موقت جهت بهبود عملکرد
- ویوهای سیستمی ss.dm_os_performance_counters, sys.dm_db_session_space_usage و متغیر سیستمی TRANCOUNT@@
جلسه شانزدهم: CTE
- CTE غبربازگشتی (Non recursive)
- بررسی قوانین حاکم بر CTE غیربازگشتی
- Multiple CTE
- Nested CTE
- CTE بازگشتی (Recursive)
- Multi Anchor and Multi recursive CTE
- بررسی قوانین حاکم بر CTE بازگشتی
جلسه هفدهم: انواع Trigger
- DML Trigger: AFTER TRIGGER (INSERT, UPDATE, DELETE)
- ذخیره سوابق تغییرات رکوردها در جدولی دیگر توسط Trigger همراه با ذخیره تاریخ، عمل DML صورت گرفته و مشخصات کاربر و ...
- کنترل داده های ورودی و موجود جهت حفظ یکپارچگی
- جلوگیری از امکان انجام دستورات DML توسط کاربر تحت شرایط معین
- Nested Trigger و چالش های آن
- Recursive Trigger
- بررسی اولویت تریگرها
- DML Trigger: INSTEAD OF TRIGGER (INSERT, UPDATE, DELETE)
- جلوگیری از تغییرات نامعتبر و نامناسب رکوردها و هدایت تریگر به انجام عملی دیگر به جای آن تغییرات
- جداسازی داده های تکراری و غیرتکراری ورودی توسط تریگر
- بررسی امکان داشتن کلید خارجی بین دو جدول از دو دیتابیس متفاوت توسط تریگر در عین حفظ شدن یکپارچگی ارجاعی
- بررسی امکان انجام تغییرات روی رکوردها تنها توسط کابران مجاز توسط تریگر
- DDL Trigger در سطح دیتابیس و سرور
- ذخیره سوابق هرگونه تغییرات متا دبتا
- استفاده از تریگر جهت محدودسازی کاربران برای ایجاد تغییرات روی متا دیتا در سطح دیتابیس و سرور
- LOGON Trigger
- بررسی انواع کوئری ها جهت محدود سازی کاربر برای اتصال به SQL Server
- رصد و کنترل کاربران متصل به دیتابیس SQL Server
- توابع Update و COLUMNS_UPDATE
- بررسی تابع EVENTDATA جهت واکشی مشخصات کاربران و سیستمهای کاربران که رویدادهای DDLای و لاگینی انجام داده اند
- توابع APP_NAME, HOST_ID, HOST_NAME, CONNECTIONPROPERTY
- تابع TRIGGER_NESTLEVEL و متغیر سیستمی NESTEDLEVEL@@
- متغیرهای سیستمی PROCID@@ و ROWCOUNT@@
- پروسیجرها و جداول و ویوهای سیستمی sys.triggers, sys.trigger_events, sys.trigger_event_types, sys.server_triggers, sys.dm_exec_trigger_stats, sp_HELPTEXT, sp_HELPTRIGGER, sp_settriggerorder, sp_set_session_context
جلسه هجدهم: Set Operators
- UNION
- UNION ALL
- بررسی تفاوت JOIN و UNION
- INTERSECT
- EXCEPT
جلسه نوزدهم: ROLLUP - CUBE
- ROLLUP
- GROUPING
- GROUPING_ID
- CUBE
- GROUPING SETS
جلسه بیستم: Recovery Models
- Simple Recovery Model
- Full Recovery Model
- Bulk Logged Recovery Model
- نحوه سوییچ کردن مدلهای ریکاوری به همدیگر
- بررسی دستور DBCC SQLPERF
فایل های موجود در این آموزش: ویدیوهای آموزش – کدهای آموزش – فایل های PDF جزوه
حجم فایل: ۷.۶ گیگابایت
نقد و بررسیها
هنوز بررسیای ثبت نشده است.