بررسی تخصصی آپشن های پیشرفته view ها
درس “بررسی تخصصی آپشنهای پیشرفته Viewها” در SQL Server به تحلیل و کاربرد گزینههای پیشرفتهای مانند SCHEMABINDING میپردازد که نقش کلیدی در افزایش امنیت و پایداری ویوها ایفا میکند. با استفاده از SCHEMABINDING، ویو به جداول مرجع خود متصل میشود، به طوری که هرگونه تغییر در ساختار جداول مرتبط، مانند حذف یا تغییر نام ستونها، مسدود شده و از خرابی ویو جلوگیری میگردد. این درس با ارائه مفاهیم کاربردی و نمونههای عملی، نحوه تعریف ویوهای مقاوم در برابر تغییرات را توضیح میدهد و به متخصصان میآموزد چگونه از این قابلیت برای حفظ یکپارچگی دادهها در محیطهای پیچیده استفاده کنند.
مخاطبان با تماشای ویدیوی آموزشی مرتبط، به درک عمیقی از نحوه استفاده از این ابزار پیشرفته در پروژههای واقعی خواهند رسید.
در مثالهای قبل ما یک view با نام CustomerNameWithAccountNumber ایجاد کردیم.
اگر ما روی اون کلیک راست کنیم و روی گزینه design برویم میتوانیم ببینیم که اون با بهره گیری از جدول customer و person تعریف شده.
به خصوص اینکه اون از فیلد firstname و lastname برای جدول person استفاده کرده.
اگر یکی به این موقعیت بیاید و جدول person رو تغییر بدهد، برای مثال اگر فیلد firstname رو پاک کند و یا حتی نام اون فیلد رو تغییر بدهد، ما یک مشکل پیدا می کنیم و اون شکستن view ما هست.Sql server یک مکانیزمی برای تلاش برای ممانعت با شکستن ویو دارد و من اکنون به شما این مکانیزم رو نشان میدهم تا با آن آشنا بشوید.
من باید این صفحه رابط رو ببندم و روی نام view کلیک راست میکنم و به آپشن script view as و بعد از اون به alter to و بعد هم به New Query editor window میروم و اگر لازم باشد شما باید با انتخاب گزینه کانکت به نمونه sql خاص متصل بشوید.
بنابراین تا اینجا کار بدانید که این رابط به من اجازه میدهد که view رو تغییر بدهم.
اگر من بخواهم میتوانم دستور sql رو در اینجا تغییر بدهم.
اما اینکار رو نمیکنم.
به جای اون میخواهم یک آپشن رو با نام schemabinding اضافه کنم و schemabinding، یک رابطهای بین view ما و جدولهایی که برای آن تعریف شدند، ایجاد میکند و از ایجاد تغییرات جداولی که برای آن تعریف شدند جلوگیری میکنند. به خصوص از هر تغییری که این view رو بشکند جلوگیری میکند.
برای ادامه ما نیاز داریم در سمت راست قبل از کلمه کلیدی as یک خط اضافه کنم.
در واقع میخواهم یک خط جدیدی بین alter و as اضافه کنم.
من عبارت WITH SCHEMABINDING رو اضافه میکنم.
بنابراین اینجا WITH SCHEMABINDING رو دارم.
میخواهم پیش بروم و اون رو اجرا کنم که بعد از اجرا پیام Commands Completely Successfully رو به ما نشان میدهد که به قطع خبر خوبی است.
حالا اجازه بدهید پیش برویم و اون رو تست کنیم.
لیست tables رو باز میکنم و روی جدول person کلیک میکنم و روی گزینه design میروم و بعد سعی میکنم که فیلد firstname رو تغییر بدهم.
زمانی که من اینرو میبندم اول از من میپرسد که آیا من این تغییر رو تأیید میکنم یا نه؟
روی دکمه yes کلیک میکنم و بعد از اون به من یک هشدار میدهد و میگوید که چون SCHEMABINDING تغییر پیدا کرده این فیلد مسدود میشود.
اون یک گزینهای رو به من میدهد که این بلوکه شدن رو میتوانم از بین ببرم و من میخواهم روی دکمه no کلیک کنم تا view من شکسته نشود.
اگر ما SCHEMABINDING به صورت فعال یا enabled نداشته باشیم و شخصی سعی کند که این جدول رو که برای اون هیچ هشداری داده نمیشود، تغییر بدهد؛ احتمالاً این جدول تغییر بکند و به دنبال اون view ما هم میشکند. بنابراین به عنوان بهترین عمل، من سعی میکنم برای اجرا SCHEMABINDING رو، روی همه viewها پیاده کنم و برای اینکار همانطور که دیدید فقط باید عبارت With SCHEMABINDING رو اضافه کنم.