نگاهی به امکانات نسخه جدید SQL Server 2005
نگاهی به امکانات نسخه جدید SQL Server 2005 |
|
علوم ریاضی > علو م رایانه > برنامه های کامپیوتری |
(cached) |
نگاهی به امکانات نسخه جدید SQL Server 2005
عرضه شدن نسخه 2005 پایگاه دادهای
مشهور مایکروسافت یعنی SQLServer، بازار نرمافزارهای بانک اطلاعاتی را به
شدت تحت تأثیر خود قرار داد. امکانات گستردهای که در این نسخه جدید تعبیه
شده، طراحی و پیادهسازی بانکهای اطلاعاتی را سرعت بخشیده و تلفیق و
انطباق آن با انواع فناوریهای نو مانند XML وADO.NET، باعث افزایش قدرت و
کارایی آن شده است. در این مقاله به برخی از ویژگیهای جدید این برنامه
نگاهی خواهیم داشت.
مشهور مایکروسافت یعنی SQLServer، بازار نرمافزارهای بانک اطلاعاتی را به
شدت تحت تأثیر خود قرار داد. امکانات گستردهای که در این نسخه جدید تعبیه
شده، طراحی و پیادهسازی بانکهای اطلاعاتی را سرعت بخشیده و تلفیق و
انطباق آن با انواع فناوریهای نو مانند XML وADO.NET، باعث افزایش قدرت و
کارایی آن شده است. در این مقاله به برخی از ویژگیهای جدید این برنامه
نگاهی خواهیم داشت.
Snapshot Isolation Level
یکی از روشهایی که به انواع
متدهای قفل کردن ردیفهای یک جدول بانکاطلاعاتی در نسخه جدید اضافه شده
است، شیوه تصویربرداری از رکورد است. در روشهای قبلی، اگر یک یا چند
رکورد بانک اطلاعاتی توسط دستور BeginTrans که شروع یک فرآیند را مشخص
میکند در شرف تغییر یا حذف قرار میگرفتند، تا مادامی که فرآیند مذکور
توسط دستور Commit Trans تأیید یا توسط RollBack منتفی نشود، از هیچ جا و
برنامهای نمیتوان رکوردهای مذکور را حتی با دستور ساده SELECT خواند.
اما در روش جدید قفلگذاری، در صورت بروز چنین رویدادی سایر کاربران
میتوانند همواره آخرین ارزش رکوردهای مذکور را با این فرض که هنوز هیچ
تغییری در آنها ایجاد نشده است بخوانند و مورد استفاده قرار دهند.
متدهای قفل کردن ردیفهای یک جدول بانکاطلاعاتی در نسخه جدید اضافه شده
است، شیوه تصویربرداری از رکورد است. در روشهای قبلی، اگر یک یا چند
رکورد بانک اطلاعاتی توسط دستور BeginTrans که شروع یک فرآیند را مشخص
میکند در شرف تغییر یا حذف قرار میگرفتند، تا مادامی که فرآیند مذکور
توسط دستور Commit Trans تأیید یا توسط RollBack منتفی نشود، از هیچ جا و
برنامهای نمیتوان رکوردهای مذکور را حتی با دستور ساده SELECT خواند.
اما در روش جدید قفلگذاری، در صورت بروز چنین رویدادی سایر کاربران
میتوانند همواره آخرین ارزش رکوردهای مذکور را با این فرض که هنوز هیچ
تغییری در آنها ایجاد نشده است بخوانند و مورد استفاده قرار دهند.
باز هم داتنت
با نسخه جدید SQL Server،
برنامهنویسان بانکهای اطلاعاتی قادرند از امکانات و قابلیتهای موجود در
پلتفرم داتنت و کلیه توابع و کلاسهای ساخته شده در آن بهرهمند شوند.
یکی از ابتداییترین و در عین حال اساسیترین این قابلیتها، امکان
استفاده از دو زبان مهم و کاربرپسند داتنت یعنی ویژوال بیسیک و سیشارپ
در پیادهسازی اجزای مختلف یک بانکاطلاعاتی است. این عامل نهتنها باعث
میشود که برنامهنویسان برای نوشتن ماژولهایی مثل تریگرها، روالها
(Stored Procedures) در توابع به جای استفاده از زبان استاندارد و در عین
حال پیچیده T-SQL ، بتوانند از زبانهای محیط داتنت با تمام ساختارها،
دستورات، کلاسها، آرایهها، و خلاصه تمام ویژگیهای یک زبان شی گرا
استفاده کنند، بلکه این همکاری نزدیک بین موتور برنامهنویسی داتنت یعنی
CLR (که مسؤول تبدیل کدهای نوشته شده داتنت به زبان سیستمعامل است) و موتور بانک اطلاعاتی SQLServer باعث شده تا به غیر از تنوع
زبانهای برنامهنویسی قابل استفاده درSQLServer، تغییر قابل توجهی نیز در
کارایی ماژولهای
مذکور پیش آید. در واقع موضوع از این قرار است که اصولاً کدهای نوشته شده
به زبانهای داتنت، ابتدا توسط کامپایلر به زبان (IL) ترجمه میشوند. سپس
CLR این کد میانی را به کد قابل فهم سیستمعامل تبدیل و آماده اجرا
مینماید. این کار سبب میشود تا کدهای نهایی به دلیل اینکه بسیار به
سیستمعامل نزدیک میباشد سریعتر از کدهای TSQL (که فقط توسط موتور بانک
اطلاعاتی قابل اجرا هستند) اجرا شوند و در زمان اجرا از کارایی بیشتری
برخوردار باشند. البته این مسأله بدین معنی نیست که استفاده از زبانهای
داتنت همیشه بر زبانهای SQL ارجحیت دارد، بلکه منظور آن است که در برخی
موارد ممکن است آن قدر منطق و الگوریتم یک ماژول پیچیده باشد که
برنامهنویس استفاده از زبانهای داتنت را به دلیل آسانتر بودن ساختار و
دستورات آن به زبان SQL ترجیح دهد. بنابراین زمانی که بیشترعملیات یک
ماژول مربوط به خواندن و نوشتن اطلاعات باشد بهتر است از همان دستورات
استاندارد SQL یعنی SELECT ،UPDATE ،DELETE وINSERT استفاده کرده و بیجهت
منابع سیستم را صرف تعریف متغیرها و کلاسهای داتنت ننماید. اما در
ماژولهایی که بیشتر عملیاتشان شامل پردازش اطلاعات مثل انجام عملیاتهای
ریاضی یا مقایسه اطلاعات با یکدیگر است بهتر است تا هم از امکانات
برنامهنویسی و هم از سرعت و کارایی بالای داتنت در این زمینه بهره برد و
ماژولهای مذکور را با زبانهای داتنت پیادهسازی کرد.
برنامهنویسان بانکهای اطلاعاتی قادرند از امکانات و قابلیتهای موجود در
پلتفرم داتنت و کلیه توابع و کلاسهای ساخته شده در آن بهرهمند شوند.
یکی از ابتداییترین و در عین حال اساسیترین این قابلیتها، امکان
استفاده از دو زبان مهم و کاربرپسند داتنت یعنی ویژوال بیسیک و سیشارپ
در پیادهسازی اجزای مختلف یک بانکاطلاعاتی است. این عامل نهتنها باعث
میشود که برنامهنویسان برای نوشتن ماژولهایی مثل تریگرها، روالها
(Stored Procedures) در توابع به جای استفاده از زبان استاندارد و در عین
حال پیچیده T-SQL ، بتوانند از زبانهای محیط داتنت با تمام ساختارها،
دستورات، کلاسها، آرایهها، و خلاصه تمام ویژگیهای یک زبان شی گرا
استفاده کنند، بلکه این همکاری نزدیک بین موتور برنامهنویسی داتنت یعنی
CLR (که مسؤول تبدیل کدهای نوشته شده داتنت به زبان سیستمعامل است) و موتور بانک اطلاعاتی SQLServer باعث شده تا به غیر از تنوع
زبانهای برنامهنویسی قابل استفاده درSQLServer، تغییر قابل توجهی نیز در
کارایی ماژولهای
مذکور پیش آید. در واقع موضوع از این قرار است که اصولاً کدهای نوشته شده
به زبانهای داتنت، ابتدا توسط کامپایلر به زبان (IL) ترجمه میشوند. سپس
CLR این کد میانی را به کد قابل فهم سیستمعامل تبدیل و آماده اجرا
مینماید. این کار سبب میشود تا کدهای نهایی به دلیل اینکه بسیار به
سیستمعامل نزدیک میباشد سریعتر از کدهای TSQL (که فقط توسط موتور بانک
اطلاعاتی قابل اجرا هستند) اجرا شوند و در زمان اجرا از کارایی بیشتری
برخوردار باشند. البته این مسأله بدین معنی نیست که استفاده از زبانهای
داتنت همیشه بر زبانهای SQL ارجحیت دارد، بلکه منظور آن است که در برخی
موارد ممکن است آن قدر منطق و الگوریتم یک ماژول پیچیده باشد که
برنامهنویس استفاده از زبانهای داتنت را به دلیل آسانتر بودن ساختار و
دستورات آن به زبان SQL ترجیح دهد. بنابراین زمانی که بیشترعملیات یک
ماژول مربوط به خواندن و نوشتن اطلاعات باشد بهتر است از همان دستورات
استاندارد SQL یعنی SELECT ،UPDATE ،DELETE وINSERT استفاده کرده و بیجهت
منابع سیستم را صرف تعریف متغیرها و کلاسهای داتنت ننماید. اما در
ماژولهایی که بیشتر عملیاتشان شامل پردازش اطلاعات مثل انجام عملیاتهای
ریاضی یا مقایسه اطلاعات با یکدیگر است بهتر است تا هم از امکانات
برنامهنویسی و هم از سرعت و کارایی بالای داتنت در این زمینه بهره برد و
ماژولهای مذکور را با زبانهای داتنت پیادهسازی کرد.
ADO .NET!! وارد میشود
طبق
یک سنت نهچندان قدیمی برنامهنویسی در محیط ویندوز، برنامهنویسان
SQLServer، بانک اطلاعاتی موردنظرشان را برروی سرور و برنامه کاربردی
نوشته شده با زبانی مثل ویژوال بیسیک را بر روی کلاینتها قرار میدهند.
سپس از طریق این برنامه کاربردی و با استفاده از اشیایی از جنس ADO
دادههای موردنیاز خود را از سمت سرور دریافت کرده و یا به آن ارسال
میکنند. اکنون این ارتباط به لطف نسخه جدید SQLServer و همچنین محیط
داتنت، با امکانات جدیدADO.NET بسیار کاملتر از قبل شده است. این ارتباط
جدید با استفاده از مکانیسمی به نام اعلان (Notification) به یک ارتباط
دوطرفه فعال تبدیل شده به طوری که ADO.NET قادر است پیغامهایی را از سمت
پایگاه داده به سمت کلاینت ارسال کند. به عنوان مثال فرض کنید که شما با
استفاده ازADO تعدادی از رکوردهای یک جدول بانک اطلاعاتی را انتخاب کرده و
مشغول کار برروی آنها هستید. در همین هنگام کاربر دیگری از طریق کلاینت و
ADO خود، رکوردی در محدوده رکوردهای مورد انتخاب شما را تغییر میدهد یا
حذف میکند. در این وقت موتور پایگاه داده با ارسال پیغامی به ADO شما،
این مسأله را با استفاده از فراخوانی یک رخداد (Event) شی ADO به اطلاعتان
میرساند.
یک سنت نهچندان قدیمی برنامهنویسی در محیط ویندوز، برنامهنویسان
SQLServer، بانک اطلاعاتی موردنظرشان را برروی سرور و برنامه کاربردی
نوشته شده با زبانی مثل ویژوال بیسیک را بر روی کلاینتها قرار میدهند.
سپس از طریق این برنامه کاربردی و با استفاده از اشیایی از جنس ADO
دادههای موردنیاز خود را از سمت سرور دریافت کرده و یا به آن ارسال
میکنند. اکنون این ارتباط به لطف نسخه جدید SQLServer و همچنین محیط
داتنت، با امکانات جدیدADO.NET بسیار کاملتر از قبل شده است. این ارتباط
جدید با استفاده از مکانیسمی به نام اعلان (Notification) به یک ارتباط
دوطرفه فعال تبدیل شده به طوری که ADO.NET قادر است پیغامهایی را از سمت
پایگاه داده به سمت کلاینت ارسال کند. به عنوان مثال فرض کنید که شما با
استفاده ازADO تعدادی از رکوردهای یک جدول بانک اطلاعاتی را انتخاب کرده و
مشغول کار برروی آنها هستید. در همین هنگام کاربر دیگری از طریق کلاینت و
ADO خود، رکوردی در محدوده رکوردهای مورد انتخاب شما را تغییر میدهد یا
حذف میکند. در این وقت موتور پایگاه داده با ارسال پیغامی به ADO شما،
این مسأله را با استفاده از فراخوانی یک رخداد (Event) شی ADO به اطلاعتان
میرساند.
علاوه براین قابلیت
جدید، فناوری جدید دیگری هم با استفاده ازADO.NET به نسخه جدید SQLServer
اضافه شده و آن امکان چند پرسوجوی همزمان توسط یک شی ADO است. در این
شیوه اگر یک شی ADO با استفاده از دستور SELECT مشغول خواندن تعدادی از
رکوردهای یک جدول بانک اطلاعاتی باشد، میتواند بدون اینکه منتظر به
پایان رسیدن این عملیات شود، تعداد دیگری از رکوردهای یک جدول دیگر بانک
اطلاعاتی را بخواند. این قابلیت جدید با نام (Multiple Active Result Set
(MARS که قبلاً فقط در کرسرهای سمت سرور (server side) و آن هم نه با
کارایی بالا وجود داشت اکنون در کرسرهای سمت راست کلاینت هم وجود دارد و
تفاوت عمده آن با شکل قدیمی هم علاوه بر مورد مذکور، امکان ایجاد چند کرسر
در یک شی ADO به صورت همزمان است. SQLServer نسخه 2005 به خوبی از تمام
این ویژگیها، پشتیبانی میکند.
جدید، فناوری جدید دیگری هم با استفاده ازADO.NET به نسخه جدید SQLServer
اضافه شده و آن امکان چند پرسوجوی همزمان توسط یک شی ADO است. در این
شیوه اگر یک شی ADO با استفاده از دستور SELECT مشغول خواندن تعدادی از
رکوردهای یک جدول بانک اطلاعاتی باشد، میتواند بدون اینکه منتظر به
پایان رسیدن این عملیات شود، تعداد دیگری از رکوردهای یک جدول دیگر بانک
اطلاعاتی را بخواند. این قابلیت جدید با نام (Multiple Active Result Set
(MARS که قبلاً فقط در کرسرهای سمت سرور (server side) و آن هم نه با
کارایی بالا وجود داشت اکنون در کرسرهای سمت راست کلاینت هم وجود دارد و
تفاوت عمده آن با شکل قدیمی هم علاوه بر مورد مذکور، امکان ایجاد چند کرسر
در یک شی ADO به صورت همزمان است. SQLServer نسخه 2005 به خوبی از تمام
این ویژگیها، پشتیبانی میکند.
تکنولوژی XML
اکنون که XML به یک استاندارد
ارتباطی بین سکوهای مختلف تبدیل شده است، نسخه جدید SQL Server هم از توجه
کافی به آن و ایجاد یک انقلاب در سادهتر استفاده کردن از آن طفره نرفته
است. در نسخه 2000 کاربران قادر بودند تا با استفاده از دستور FOR XML
نتیجه یک پرسوجوی SELECT از یک بانک اطلاعاتی را به درون یک فایل XML بریزند یا مثلاً با دستور OPEN XML میتوانستند یک فایل XML را باز کرده و شروع به خواندن دستورات درون آن نمایند.
ارتباطی بین سکوهای مختلف تبدیل شده است، نسخه جدید SQL Server هم از توجه
کافی به آن و ایجاد یک انقلاب در سادهتر استفاده کردن از آن طفره نرفته
است. در نسخه 2000 کاربران قادر بودند تا با استفاده از دستور FOR XML
نتیجه یک پرسوجوی SELECT از یک بانک اطلاعاتی را به درون یک فایل XML بریزند یا مثلاً با دستور OPEN XML میتوانستند یک فایل XML را باز کرده و شروع به خواندن دستورات درون آن نمایند.
از
آنجا که در نسخه جدید SQL Server توجه خاصی به این استاندارد و زبان
ارتباطی شده است، یک نوع داده جدید (Data type) به انواع دادههای قبلی و
استاندارد SQL مثل int ، char و امثال آن اضافه شده است. این نوع داده
جدید که XML نام دارد و دارای خصوصیات یک نوع داده موجود در یک محیط
شیگرا است، دارای متدهای پیشرفتهای چون ()nodes() ،Value() ،exist()
،query و ()modify بوده و قادر است انواع
آنجا که در نسخه جدید SQL Server توجه خاصی به این استاندارد و زبان
ارتباطی شده است، یک نوع داده جدید (Data type) به انواع دادههای قبلی و
استاندارد SQL مثل int ، char و امثال آن اضافه شده است. این نوع داده
جدید که XML نام دارد و دارای خصوصیات یک نوع داده موجود در یک محیط
شیگرا است، دارای متدهای پیشرفتهای چون ()nodes() ،Value() ،exist()
،query و ()modify بوده و قادر است انواع
پردازشهای
قابل انجام برروی اسناد XML را به راحتی انجام دهد. عملیات جستجو، تغییر،
حذف و درج مقادیر موردنظر در داخل یک فایل XML را میتوان با استفاده از
متدهای مذکور و صرفاً با چند خط برنامهنویسی انجام داد. همچنین در این
نسخه برخلاف نسخه 2000، با استفاده از دستور FOR XML میتوان یک شیء از
جنس XML را بدون ارسال آن به کلاینت، برروی سرور ساخته و از آن نگهداری
کرد. با این کار میتوان جداولی را که مرتباً مورد رجوع کاربران قرار
میگیرند هراز گاهی در قالب XML به داخل حافظه آورد و کاربران مذکور به
جای رجوع به جداول اصلی در هارددیسک، با استفاده از دستورات ویژه جستجو
درXML ، متغیر مذکور را در حافظه سرور مورد جستجو قرار دهند و بدینوسیله
یک نوع عمل Cache کردن را جهت افزایش سرعت دسترسی به اطلاعات تکراری
شبیهسازی کنند. در این حالت، کاربران به جای استفاده از دستورSELECT
استاندارد میتوانند از OPEN XML که در نسخه 2005 قادر است متغیرهای جدید
از نوع XML را بخواند استفاده کرده و به سرعت به اطلاعات موردنیاز خود
دسترسی پیدا کنند. این قابلیت جدید آنقدر در سریعتر کردن جستجو در
برنامههای تحت وب مهم و مؤثر است که جای هیچ مشکلی را در استفاده از آن
باقی نمیگذارد.
قابل انجام برروی اسناد XML را به راحتی انجام دهد. عملیات جستجو، تغییر،
حذف و درج مقادیر موردنظر در داخل یک فایل XML را میتوان با استفاده از
متدهای مذکور و صرفاً با چند خط برنامهنویسی انجام داد. همچنین در این
نسخه برخلاف نسخه 2000، با استفاده از دستور FOR XML میتوان یک شیء از
جنس XML را بدون ارسال آن به کلاینت، برروی سرور ساخته و از آن نگهداری
کرد. با این کار میتوان جداولی را که مرتباً مورد رجوع کاربران قرار
میگیرند هراز گاهی در قالب XML به داخل حافظه آورد و کاربران مذکور به
جای رجوع به جداول اصلی در هارددیسک، با استفاده از دستورات ویژه جستجو
درXML ، متغیر مذکور را در حافظه سرور مورد جستجو قرار دهند و بدینوسیله
یک نوع عمل Cache کردن را جهت افزایش سرعت دسترسی به اطلاعات تکراری
شبیهسازی کنند. در این حالت، کاربران به جای استفاده از دستورSELECT
استاندارد میتوانند از OPEN XML که در نسخه 2005 قادر است متغیرهای جدید
از نوع XML را بخواند استفاده کرده و به سرعت به اطلاعات موردنیاز خود
دسترسی پیدا کنند. این قابلیت جدید آنقدر در سریعتر کردن جستجو در
برنامههای تحت وب مهم و مؤثر است که جای هیچ مشکلی را در استفاده از آن
باقی نمیگذارد.
سرویس اعلان (Notification)
همانطور که گفتیم سیستم اعلان
درSQL Server قادر است پیغامهایی را طی زمانهای مشخص به سمت کاربران
بفرستد. مثلاً تصور کنید که تعدادی کاربر در حال اتصال به یک بانک حاوی
اطلاعات مربوط به ارزش سهام در بورس هستند. از آنجایی که ممکن است قیمت
سهام هر شرکت یا مؤسسه برای تعدادی از کاربران از اهمیت زیادی برخوردار
باشد، میتوان این سیستم را طوری تنظیم کرد تا هرگاه ارزش سهام خاصی که
موردنظر هر کاربر است تغییر کرد، به صورت اتوماتیک به وی اعلام شود. کاربر
هم میتواند این تغییرات را برروی برنامه کاربردی خود، تلفن همراه (در
قالب Windows Messenger ،(SMS و یا ایمیل بهصورت مرتب دریافت و مشاهده کند.
درSQL Server قادر است پیغامهایی را طی زمانهای مشخص به سمت کاربران
بفرستد. مثلاً تصور کنید که تعدادی کاربر در حال اتصال به یک بانک حاوی
اطلاعات مربوط به ارزش سهام در بورس هستند. از آنجایی که ممکن است قیمت
سهام هر شرکت یا مؤسسه برای تعدادی از کاربران از اهمیت زیادی برخوردار
باشد، میتوان این سیستم را طوری تنظیم کرد تا هرگاه ارزش سهام خاصی که
موردنظر هر کاربر است تغییر کرد، به صورت اتوماتیک به وی اعلام شود. کاربر
هم میتواند این تغییرات را برروی برنامه کاربردی خود، تلفن همراه (در
قالب Windows Messenger ،(SMS و یا ایمیل بهصورت مرتب دریافت و مشاهده کند.
سرویس گزارشگیری
سرویس جدید تولید گزارشهای متنوع
در نسخه 2005 به یکی از جالبترین و پرکاربردترین قابلیتهای این نسخه
تبدیل شده است، وجود یک موتور گزارشگر قوی در سمت سرور و یک ابزار مناسب
ساخت گزارش با واسط کاربر عالی، باعث شده تا برنامهنویسان بتوانند
گزارشهای موردنظر خود را با کارایی و سرعت مناسب در سمت سرور بسازند به
طوری که این گزارشهای سمت سرور توسط هر برنامه کاربردی سمت کلاینت در هر
پلتفرمی با همان امکانات اتصال به SQL Server قابل مشاهده است.
در نسخه 2005 به یکی از جالبترین و پرکاربردترین قابلیتهای این نسخه
تبدیل شده است، وجود یک موتور گزارشگر قوی در سمت سرور و یک ابزار مناسب
ساخت گزارش با واسط کاربر عالی، باعث شده تا برنامهنویسان بتوانند
گزارشهای موردنظر خود را با کارایی و سرعت مناسب در سمت سرور بسازند به
طوری که این گزارشهای سمت سرور توسط هر برنامه کاربردی سمت کلاینت در هر
پلتفرمی با همان امکانات اتصال به SQL Server قابل مشاهده است.
بهبودهای ایجاد شده در زبان
در 2005 SQL Server تغییرات بسیار
مثبتی در زبان SQL T ایجاد شده است. این تغییرات در زمینههای مختلف مثل
مدیریت خطاها، جستجوهای بازگشتی (Recursive Query) و حتی در بدنه موتور پایگاه دادهها انجام شده و کارایی کلی ذخیره و یا خواندن اطلاعات را به نحو مطلوبی افزایش داده است. به عنوان مثال دردستورات
مثبتی در زبان SQL T ایجاد شده است. این تغییرات در زمینههای مختلف مثل
مدیریت خطاها، جستجوهای بازگشتی (Recursive Query) و حتی در بدنه موتور پایگاه دادهها انجام شده و کارایی کلی ذخیره و یا خواندن اطلاعات را به نحو مطلوبی افزایش داده است. به عنوان مثال دردستورات
TSQL،
دو اپراتور جدید دیده میشود، که PIVOT وUNPIVOT نام دارند. این دو
اپراتور که در قسمت FROM یک پرسوجو مورد استفاده قرار میگیرند میتوانند
نتیجه یک جستجوی انجام شده توسط دستور SELECT را به جای برگرداندن در قالب
ردیفها یا رکوردهای پشتسرهم، به صورت ستونهای مختلف یک یا چند رکورد
برگردانند. در این روش یکی از ستونهای (فیلدهای) یک جستجو به عنوان محور
معرفی شده و بقیه ستونها براساس آن به صورت افقی طبقهبندی میشوند.
دو اپراتور جدید دیده میشود، که PIVOT وUNPIVOT نام دارند. این دو
اپراتور که در قسمت FROM یک پرسوجو مورد استفاده قرار میگیرند میتوانند
نتیجه یک جستجوی انجام شده توسط دستور SELECT را به جای برگرداندن در قالب
ردیفها یا رکوردهای پشتسرهم، به صورت ستونهای مختلف یک یا چند رکورد
برگردانند. در این روش یکی از ستونهای (فیلدهای) یک جستجو به عنوان محور
معرفی شده و بقیه ستونها براساس آن به صورت افقی طبقهبندی میشوند.
اپراتور
دیگری که میتواند نقش مهمی را در دستورات SQL بازی کند APPLY نام دارد که
در قسمت FROM یک دستور SQL به کار میرود. با استفاده از این دستور
میتوان خروجی یک تابع (Function) را با یک یا چند جدول دیگر ترکیب (Join)
کرد همانطور که میدانید در 2005 SQL Server توابع میتوانند یک یا چند
ردیف یک جدول اطلاعاتی را برگردانند که این خروجی میتواند با یک جدول
دیگر با استفاده از اپراتور مذکور ترکیب شود.
دیگری که میتواند نقش مهمی را در دستورات SQL بازی کند APPLY نام دارد که
در قسمت FROM یک دستور SQL به کار میرود. با استفاده از این دستور
میتوان خروجی یک تابع (Function) را با یک یا چند جدول دیگر ترکیب (Join)
کرد همانطور که میدانید در 2005 SQL Server توابع میتوانند یک یا چند
ردیف یک جدول اطلاعاتی را برگردانند که این خروجی میتواند با یک جدول
دیگر با استفاده از اپراتور مذکور ترکیب شود.
مدیریت خطا
در نسخههای قدیمی SQL Server برای
کشف و مدیریت خطا از سیستم Error Handling استفاده میشد. این شیوه کشف
خطا که در زبانی مثل ویژوال بیسیک 6 هم مورد استفاده قرار میگرفت با
استفاده از دستور GOTO میتوانست کنترل و خط اجرای روال را از یک محل به
محل دیگر و در واقع از محل بروز خطا به محل مدیریت و آشکار کردن (Raise)
آن ببرد و بدینوسیله پیغام خطایی را به کار نشان دهد. نسخه جدید SQL
Server با تأثیر از پلتفرم داتنت، از دستورات ویژه کشف و مدیریت خطا با
عنوان Exception Handling استفاده میکند. این روش با استفاده از دستورات
جدید TRY/CATCH شیوه بهتری از مدیریت خطا را به اجرا میگذارد. در این روش
برخلاف روش قبل، تمام خطاهای اتفاقافتادنی مثل خطاهای مربوط به تبدیل
دادهها به یکدیگر (Data Conversion) به خوبی مدیریت شده و از بروز
خطاهایی که منجر به اتمام ناقص عملیات یک روال یا تریگر میشود جلوگیری به
عمل میآید.
کشف و مدیریت خطا از سیستم Error Handling استفاده میشد. این شیوه کشف
خطا که در زبانی مثل ویژوال بیسیک 6 هم مورد استفاده قرار میگرفت با
استفاده از دستور GOTO میتوانست کنترل و خط اجرای روال را از یک محل به
محل دیگر و در واقع از محل بروز خطا به محل مدیریت و آشکار کردن (Raise)
آن ببرد و بدینوسیله پیغام خطایی را به کار نشان دهد. نسخه جدید SQL
Server با تأثیر از پلتفرم داتنت، از دستورات ویژه کشف و مدیریت خطا با
عنوان Exception Handling استفاده میکند. این روش با استفاده از دستورات
جدید TRY/CATCH شیوه بهتری از مدیریت خطا را به اجرا میگذارد. در این روش
برخلاف روش قبل، تمام خطاهای اتفاقافتادنی مثل خطاهای مربوط به تبدیل
دادهها به یکدیگر (Data Conversion) به خوبی مدیریت شده و از بروز
خطاهایی که منجر به اتمام ناقص عملیات یک روال یا تریگر میشود جلوگیری به
عمل میآید.
پیوندهای خارجی
همچنین ببینید
کلمات کلیدی : علوم رایانه