تارا فایل

بررسی روشهای برقراری ارتباط و امنیت در اس کیو ال




موضوع
بررسی روشهای برقراری ارتباط و امنیت در اس کیو ال
Communication methods and security in SQL

نام استاد :

نام محقق :

مقدمه :
بانکهای اطلاعاتی حاوی حجم بسیار زیادی از داده هایی هستندکه چنانچه به دست اشخاص غیر مسئول برسند، می تواند برای شرکت وافراد شرکتتان بسیارزیان آورباشدSQL . سرورسیستم امنیتی با استحکامی دارد که به شما امکان می دهد تا سرویس دهنده را درسطحی قفل کنید که بتوانید دستیابی به سرویس دهنده، ودستیابی به بانک اطلاعاتی رابه ستونهای خاصی از یک جدول محدود کنید.

عناوین مهم این فصل عبارتند از:
▪ نیاز به امنیت
▪ اصول امنیت SQL سرور
▪ مدهای امنیت
▪ برقراری ارتباط با سرویس دهنده وکاربران بانک اطلاعاتی
▪ نقش ها

● نیازبه امنیت
در اینجا لازم است نیاز به امنیت را به درستی درک کنید، خطرات امنیتی از سه ناحیه متصور می شوند:

۱) فرامینی که از خارج به سیستم وارد میشوند:
مزاحمین خارجی افرادی هستند که کوشش میکنند، تا خارج ازشرکت به سیستم هایتان دستیابی پیدا کنند. این افراد به دلایل مختلف چنین کارهایی را انجام می دهند.
به عنوان مثال ممکن است این کاررا صرفا برای اذیت کردن و شوخی انجام دهند واطلاعات را به شرکت دیگری بفروشند .
۲) افرادی که در شرکتتان کار میکنند:
احتمالا متداولترین نوع مزاحمت برای سیستمتان به شمار می آیند. که انگیزه نهایی آنها، دستیابی به داده هایی است که نباید آنها را ببینند.

۳) مزاحمت تصادفی:
مزاحمت تصادفی متداول است.در این حالت کاربر وارد سیستم میشودو اطلاعات بیشتری نسبت به آنچه انتظار دارد به دست می آورد.

اصول امنیت SQL سرور
SQL سرور واژه ها ومفاهیم زیادی دارد که باید با آنها آشنا شوید.این مفاهیم شامل مراحلی است که SQL سروربا انجام آنها به یک کاربر امکان می دهد تا تحت مدهای امنیتی مختلف، که به زودی بررسی خواهند شد، با یک بانک اطلاعاتی ارتباط برقرار کنند. این واژه ها عبارتند از:
1 – ID برقراری ارتباط( Login ID): ID برقراری ارتباط، بخشی از اطلاعات اعتبارکاربراست که کاربر برای دستیابی به SQL سرور ارائه می دهد.
2 – کلمه عبور: هرکلمه عبور صرفا رشته ای ازکاراکترها است که برای اعلام اعتبارکاربری، که با یکID خاص با سرویس دهنده ارتباط برقرار می کند، به سرویس دهنده ارسال می شود.کلمات عبور خوب باید حرفی عددی باشندو طول آنها نیز حداقل 6 کاراکتر باشد.
3 – ID کاربر: یک مرحله دیگر برای دستیابی به بانک اطلاعاتی خاص است، ID برقراری ارتباط و کلمات عبور، شما را تنها به سرویس دهنده میرسانند.
اگر تا به این حد پیش روید، به هیچ یک از بانکهای اطلاعاتی آن سرویس دهنده دستیابی نخواهید داشت.
بعد از بررسی درستیID برقراری ارتباط توسطSQLسرور و تعیین اینکه کاربر مجاز به دستیابی سرویس دهنده است، وی می بایست یک بانک اطلاعاتی را برای کار انتخاب کند وبعد ID برقراری ارتباط را با تمامID های کاربری آن بانک مقایسه می کند تا اطمینان حاصل شود که کاربر به بانک اطلاعاتی دستیابی دارد.
4 -نقش ها : هر نقش روشی برای گروه بندی کاربران دارای کارهای مشابه به منظور آسان شدن مدیریت است. نقش ها در نگارش های قدیمیSQL سرور تحت عنوان گروه مطرح بودند. به جای تخصیص مجوز به هر یک از کاربران بانک اطلاعاتی، به راحتی می توانید یک نقش ایجاد کنید و بعد از قراردادن کاربران به آن نقش، مجوزها را به آن نقش تخصیص دهید.
5 – نقش برنامه کاربردی: یک نقش ویژه است که امکان دستیابی به داده های موجود در بانک اطلاعاتی را تنها به برنامه های کاربردی خاص می دهد. کاری که این نقش انجام می دهد، آن است که کاربران را مجاب می کند تا از طریق برنامه کاربردی به داده های بانک اطلاعاتی دستیابی پیدا کنند. این کار کاربران را مجاب به استفاده از برنامه کاربردیی می کند که خصوصا برای دستیابی به داده ها نوشته شده و از دستیابی برنامه های کاربردی دیگر جلوگیری میشود.
6 – گروه های ویندوزNT :امنیتSQL سرور، شدیدا بر امنیت ویندوزNT بیان شده است
گروه های ویندوزNT مستقیما به نقش هایSQL سرورقابل نگاشت هستند، از این رو هر کاربری که جزئی از آن گروه باشد، به طور خودکار بهSQL دستیابی خواهد داشت.
فرآیند بررسی اعتبار: وقتی کاربری اقدام به دستیابی به سرویس دهنده میکند، 4چیز کنترل می شود
1 – امنیت در سطح شبکه: که نخستین سطح امنیت است. کاربران در بیشتر مواقع با یک شبکه ویندوزNT ارتباط برقرار خواهند کرد، اما با هر شبکه دیگری که در کنار شبکه مذکور وجود داشته باشد، نیز می توانند ارتباط برقرار کنند. کاربر باید یکID برقراری ارتباط و یک کلمه عبور معتبر شبکه وارد کند و اگر نه در همین سطح متوقف خواهد شد.
2 – امنیت در خود سرویس دهنده: که دومین سطح امنیت است. وقتی کاربر به این سطح می رسد، می بایست یک ID برقراری ارتباط و یک کلمه عبور معتبربرای پیشروی ارائه کند. بسته به مد امنیتی که در سرویس دهنده به کار میبرید،SQL سرور ممکن است بتواندID برقراری ارتباط با ویندوزNT را تعیین نماید.
3 – نیاز به یکID کاربری در بانک اطلاعاتی: که سومین سطح امنیت است. هیچ کلمه عبوری در این سطح مطرح نیست. در عوض،ID برقراری ارتباط توسط مدیر سیستم باID کاربری نگاشت می شود.
4 – ارتباط امنیت با مجوزها: آخرین سطح امنیت است.SQL سرور کنترل میکند کهID کاربریی که کاربر از طریق آن به سرویس دهنده دستیابی پیدا کرده است، مجوزهای دستیابی به شیءهای مورد نظر را داشته باشد.این امکان وجود دارد که دستیابی فقط برای برخی شیءها باشدو نه تمام شیءها

مدهای امنیت
SQL سروردو روش مختلف برای بررسی اعتبار کاربران ومعرفی آنها به سرویس دهنده دارد.
1 – روش نخست: بررسی اعتبار ویندوزNT : ویندوزNT می تواند از ویژگیهای بسیار بیشتری در سیستم امنیتی خود استفاده کند، از جمله: حداقل طول برای کلمات عبور، تاریخ انقضای کلمات عبور، جلوگیری از برقراری ارتباط بعد از چند اقدام ناموفق. به هنگام استفاده از این روش، کاربر برای دستیابی به سرویس دهنده نیازی به ارائهID برقراری ارتباط و کلمه عبور ندارد، در عوضSQL سرور نام کاربر را از ویندوزNT می خواهد وآن را با فهرست کاربران مجاز مقایسه می کند. مراحل زیر شما را درآماده سازیSQL سرور برای استفاده از روش بررسی اعتبار ویندوزNT یاری می کنند:
1 – .SQL Server Enterprise Manager را باز کنید وبا سرویس دهنده ای که می خواهید مد امنیتی آن را تغییر دهید ارتباط برقرار کنید.
2 – گزینه Properties را انتخاب کنید.
3 – تب Security را پیدا کنید وآن را برگزینید.
4 – گزینه Windows NT Authentication را انتخاب کنید.
5.SQL Server را دوباره راه اندازی کنید.

اصول امنیتSQL سرور
SQL سرور واژه ها ومفاهیم زیادی دارد که باید با آنها آشنا شوید.این مفاهیم شامل مراحلی است که SQL سروربا انجام آنها به یک کاربر امکان می دهد تا تحت مدهای امنیتی مختلف، که به زودی بررسی خواهند شد، با یک بانک اطلاعاتی ارتباط برقرار کنند. این واژه ها عبارتند از:
۱) I برقراری ارتباط( Login ID): ID برقراری ارتباط، بخشی از اطلاعات اعتبارکاربراست که کاربر برای دستیابی به SQL سرور ارائه می دهد.
۲) کلمه عبور: هرکلمه عبور صرفا رشته ای ازکاراکترها است که برای اعلام اعتبارکاربری، که با یکID خاص با سرویس دهنده ارتباط برقرار می کند، به سرویس دهنده ارسال می شود.کلمات عبور خوب باید حرفی عددی باشندو طول آنها نیز حداقل ۶ کاراکتر باشد.
۳) ID کاربر: یک مرحله دیگر برای دستیابی به بانک اطلاعاتی خاص است، ID برقراری ارتباط و کلمات عبور، شما را تنها به سرویس دهنده میرسانند.
اگر تا به این حد پیش روید، به هیچ یک از بانکهای اطلاعاتی آن سرویس دهنده دستیابی نخواهید داشت.
بعد از بررسی درستیID برقراری ارتباط توسطSQLسرور و تعیین اینکه کاربر مجاز به دستیابی سرویس دهنده است، وی می بایست یک بانک اطلاعاتی را برای کار انتخاب کند وبعد ID برقراری ارتباط را با تمامID های کاربری آن بانک مقایسه می کند تا اطمینان حاصل شود که کاربر به بانک اطلاعاتی دستیابی دارد.
۴) نقش ها:هر نقش روشی برای گروه بندی کاربران دارای کارهای مشابه به منظور آسان شدن مدیریت است. نقش ها در نگارش های قدیمیSQL سرور تحت عنوان گروه مطرح بودند. به جای تخصیص مجوز به هر یک از کاربران بانک اطلاعاتی، به راحتی می توانید یک نقش ایجاد کنید و بعد از قراردادن کاربران به آن نقش، مجوزها را به آن نقش تخصیص دهید.
۵) نقش برنامه کاربردی: یک نقش ویژه است که امکان دستیابی به داده های موجود در بانک اطلاعاتی را تنها به برنامه های کاربردی خاص می دهد. کاری که این نقش انجام می دهد، آن است که کاربران را مجاب می کند تا از طریق برنامه کاربردی به داده های بانک اطلاعاتی دستیابی پیدا کنند. این کار کاربران را مجاب به استفاده از برنامه کاربردیی می کند که خصوصا برای دستیابی به داده ها نوشته شده و از دستیابی برنامه های کاربردی دیگر جلوگیری میشود.
۶) گروه های ویندوزNT :امنیتSQL سرور، شدیدا بر امنیت ویندوزNT بیان شده است
گروه های ویندوزNT مستقیما به نقش هایSQL سرورقابل نگاشت هستند، از این رو هر کاربری که جزئی از آن گروه باشد، به طور خودکار بهSQL دستیابی خواهد داشت.
فرآیند بررسی اعتبار: وقتی کاربری اقدام به دستیابی به سرویس دهنده میکند، ۴چیز کنترل می شود
۱) امنیت در سطح شبکه: که نخستین سطح امنیت است. کاربران در بیشتر مواقع با یک شبکه ویندوزNT ارتباط برقرار خواهند کرد، اما با هر شبکه دیگری که در کنار شبکه مذکور وجود داشته باشد، نیز می توانند ارتباط برقرار کنند. کاربر باید یکID برقراری ارتباط و یک کلمه عبور معتبر شبکه وارد کند و اگر نه در همین سطح متوقف خواهد شد.
۲) امنیت در خود سرویس دهنده: که دومین سطح امنیت است. وقتی کاربر به این سطح می رسد، می بایست یک ID برقراری ارتباط و یک کلمه عبور معتبربرای پیشروی ارائه کند. بسته به مد امنیتی که در سرویس دهنده به کار میبرید،SQL سرور ممکن است بتواندID برقراری ارتباط با ویندوزNT را تعیین نماید.
۳) نیاز به یکID کاربری در بانک اطلاعاتی: که سومین سطح امنیت است. هیچ کلمه عبوری در این سطح مطرح نیست. در عوض،ID برقراری ارتباط توسط مدیر سیستم باID کاربری نگاشت می شود.
۴) ارتباط امنیت با مجوزها: آخرین سطح امنیت است.SQL سرور کنترل میکند کهID کاربریی که کاربر از طریق آن به سرویس دهنده دستیابی پیدا کرده است، مجوزهای دستیابی به شیءهای مورد نظر را داشته باشد.این امکان وجود دارد که دستیابی فقط برای برخی شیءها باشدو نه تمام شیءها.

برقراری ارتباط باسروس دهنده وکاربران بانک اطلاعاتی
همانند کارهای دیگری که درSQL سرورانجام می دهید، روشهای مختلف زیادی برای ایجادID های برقراری ارتباط وID های کاربری وجود دارد. نخستین روش برای انجام این کارازطریق یک ویزارد درSQL Enterprise Manager است. این ویزارد شما را گام به گام در ایجاد یک ID برقراری ارتباط ویک ID کاربری یاری می کند
روش دوم برای ایجاد ID ها، استفاده از رویه های ذخیره شده است. اگراز این روش استفاده کنید، درصورت نیاز می توانید همان ID هارا درتمام سرویس دهنده ها ایجاد کنید. آخرین روش، ایجاد مجزای آنها در SQL Enterprise Manager است.
گزینه دیگری که برای افزودن یک ID کاربر دارید، ازرویه های ذخیره شده واجرای SQL Query Analyzer است.
برای بررسی اعتباربا ویندوزNT باید ازرویه ذخیره شده sp-grantloginاستفاده کنید.
وقتی ازروش بررسی اعتبار SQL سروراستفاده می کنید،ازرویه ذخیره شده sp-addloginاستفاده کنید.
قالب sp-grantlogin به شکل زیراست:
sp-grantlogin [@loginname= ]'login'
نامی که پس از sp-grantlogin باید مشخص شود،نام کاربری ویندوزNT و نام حوزه ای است که کاربر در آن قرار دارد.
به عنوان مثال، برای اینکه کاربری به نامMrMoney از حوزهMonopoly را بهSQL سرور بیفزایید، می بایست دستور زیر را اجرا کنید:
sp-grantlogin'Monopoly/Mr Money'
دستور بالا مجوز دستیابی به بانک اطلاعاتی را به آن کاربر اعطا می کند، اما دستیابی بیشتر را برای وی فراهم نمی کند.

نقش ها
نقش ها اساسا گروههایی هستند که می توانید برای گروه بندی کاربرانی به کار برید که نیازهای دستیابی آنها مشابه است.
انواع نقش های مختلفی که می توانید به کار برید عبارتند از:
۱) نقش های از پیش تعریف شده سرویس دهنده
۲) نقش های از پیش تعریف شده بانک اطلاعاتی
۳) نقش عمومی
۴) نقش های شخصی بانک اطلاعاتی

نقش های از پیش تعریف شده سرویس دهنده
نقش های سرویس دهنده برای آن هستند تا برخی از کارهای مدیریتی سرویس دهنده را به اشخاص دیگر واگذار کنید.
هفت نقش از پیش تعریف شده سرویس دهنده به شرح زیر هستند:
▪ sysadmin : اعضای این نقش می توانند هر عملی را در سرویس دهنده انجام دهند. این نقش، مشابهaccount ی به نام sa در نگارش های پیشینSQL سرور است.
▪ serveradmin : اعضای این نقش می توانند پیکربندی مشخصات سرویس دهنده را انجام دهند.
▪ setupadmin : اعضای این نقش مجازند پیوندهای سرویس دهنده ها را حذف یا اضافه کنند.
▪ Securityadmin : اعضای این گروه می توانند برقراری ارتباط با سرویس دهنده را مدیریت کنند.
▪ processadmin : اعضای این گروه می توانند هر فرآیندی را که درSQLسرور اجرا می شود را مدیریت کنند.
▪ dbcreator : این گروه مجوز ایجاد بانکهای اطلاعاتی در سرویس دهنده را دارد.
▪ diskadmin : این گروه مجوز ایجاد و مدیریت فایل ها در دیسک را دارد.

نقش های از پیش تعریف شده بانک اطلاعاتی
نقش های از پیش تعریف شده بانک اطلاعاتی به کاربران امکان می دهند تا عملیات گوناگونی را انجام دهند.
نه نقش از پیش تعریف شده بانک اطلاعاتی عبارتند از:
db-owner: اعضای این گروه به عنوان مالک بانک اطلاعاتی تعریف می شوند.
▪ db-accessadmin:عضویت در این گروه به کاربر امکان می دهد تا کاربران ویندوزNT وSQL سرور را در بانک اطلاعاتی حذف یا به آن بیفزاید.
▪ db-datareader: اعضای این گروه می توانند تمام داده های جداول کاربری بانک اطلاعاتی را ببینند.
▪ db-datawriter: اعضای این گروه مجوز افزودن، تغییریا حذف داده های تمام جداول کاربری بانک اطلاعاتی را دارند.
▪ db-ddladmin: به کاربرامکان می دهد تا شئ های یک بانک اطلاعاتی راحذف، اضافه یا اصلاح کند.
▪ db-securityadmin: اعضای این گروه می توانند نقش ها و اعضای نقش های بانک اطلاعاتیSQL سرور را مدیریت کنند.
▪ db-backupoperator: اعضای این نقش مجوز تهیه نسخه پشتیبان از بانک اطلاعاتی را دارند.
▪ db-denydatareader: اعضای این گروه نمی توانند هیچیک از داده های بانک اطلاعاتی را ببینند.
▪ db-denydatawriter: اعضای این گروه هیچ مجوزی برای تغییر داده های بانک اطلاعاتی ندارند.

نقش عمومی
نقش عمومی یک نوع نقش بانک اطلاعاتی ویژه است که تمام کاربران بانک اطلاعاتی عضوی از آن هستند. این نقش به هنگام ایجاد تمام بانک های اطلاعاتی ایجاد می شود.
فایده این نقش زمانی مشخص می شود که می خواهید مجموعه ای از مجوزهای پیش فرض را به تمام کاربران بدهید.

نقش های شخصی بانک اطلاعاتی
نقش های شخصی بانک اطلاعاتی، نقش هایی هستند که مدیر سیستم برای مقاصد ویژه ایجاد می کند. این نقش ها توانایی تخصیص مجوزهای ویژه ای را فراهم می کنند که در نقش های از پیش تعریف شده موجود نیستند. قوانینی که می بایست به هنگام ایجاد این نقش ها به خاطر داشته باشید عبارتند از:
نقش های شخصی بانک اطلاعاتی در محدوده یک بانک اطلاعاتی ایجاد می شوند و در وسط چند بانک اطلاعاتی قابل گسترش نیستند.
کاربران در هر لحظه نمی توانند به بیش از یک نقش شخصی بانک اطلاعاتی تعلق داشته باشند.
نقش های شخصی می توانند حاویID های برقراری ارتباط ویندوزNT،IDهای برقراری ارتباطSQLسرور و دیگر نقش های SQLسرور باشند

ابزارهای امنیتی در SQL Server
ابزارهای کوچک و بزرگ زیادی در رابطه با امنیت SQL Server ارایه شده اند، که بعضی آنها برای حمله و بعضی دیگر برای دفاع و تقویت امنیت SQL Server به کار می روند.
ابزارهایی ارایه شده اند که با بکارگیری آنها می توان یک SQL Server امن داشت. ضمناً ابزارهای حمله بسیاری نیز وجود دارند که آشنائی با آنها می تواند دید خوبی در رابطه با امنیت SQL Server و جلوگیری از آسیب های آن بوجود آورد. بنابراین در دو بخش زیر خلاصه ای درباره ی بعضی از ابزارهای حمله و نیز دفاع، ارایه خواهد شد.

ابزارهای حمله
ابزارForceSQL نسخه 2.0
این ابزار برای بدست آوردن رمز عبور یک SQL Server استفاده می شود. ForceSQL دارای ویژگی¬های زیر است:
* کنترل و راهبری آسان آن در خط فرمان
* اجرای حمله دیکشنری (1)
* اجرای حمله فراگیر(2)
* بکارگیری درگاهی به غیر از درگاه 1433

ابزار SQLDict:
این ابزار که در سطر فرمان تمامی ویندوزها قابل اجرا است، تدارک یک حمله دیکشنری علیهSQL Server را می دهد. جهت بکارگیری آن باید IP ماشین هدف، شناسه ی کاربری که می خواهید رمز او را به دست آورید و فایلی که حاوی رمزهای عبور برای چک کردن می باشد را مشخص کنید.

ابزار CPMdeamon :
این برنامه که در محیط لینوکس نوشته شده است، یک کد CGI را اجرا می کند و اجازهی عوض کردن رمز عبور را از راه دور می دهد.

ابزار SQLScanner.exe :
این ابزار که در سطر فرمان ویندوز اجرا می شود، یک محدوده آدرس IPاز نوع کلاس B(XXX.XXX) و نام یک فایل خروجی را به عنوان پارامتر می گیرد، و سپس محدوده را جستجو کرده و IP¬هایی را که دارای Sql Server هستند مشخص می نماید و در فایل خروجی لیست می کند. این ابزار قادر به شناسایی SQL Serverهایی که از درگاه استاندارد 1433 استفاده نمی کنند نیز می باشد.

ابزار SqlPing.exe:
این برنامه ی سطر فرمان ویندوز، اطلاعات مفیدی (نظیر نام سِرور، شماره ی نسخه ، شماره ی درگاه و ….) در مورد یک SQL Server نصب شده بر روی یک IP خاص ارائه می دهد.

ابزارNGSSQLCrack :
ابزار NGSSQLCrack ابزاری است که جهت شکستن رمز عبور در SQL Server 7 و 2000 بکار گرفته می شود.

ابزار های دفاعی
ابزار SQL Critical Update:
SQL Critical Update بسته ای نرم افزاری است که توسط شرکت مایکروسافت ارائه شده و شامل اجزای زیر است:
ابزار SQL Critical Update : که در آن یک وصله ی امنیتی برای نسخه هایی از SQL Server 2000 و MSDE 2000 که در برابر کرم Slammer آسیب پذیرند قرار داده شده است.

ابزار SQL Scan : با استفاده از این ابزار می توان یک کامپیوتر، یک دامنه و یا محدوده ای از آدرس ها را برای یافتن یک نسخه ی نصب شده از SQL Server 2000 یا MSDE 2000 که در برابر کرم Slammer آسیب پذیر است، کنترل نمود.

ابزار SQL Check : با استفاده از این ابزار می توان یک کامپیوتر را برای یافتن نسخه های آسیب پذیرSQL Server 2000 یا MSDE 2000 در برابر کرم Slammer، چک کرد.

ابزار Microsoft Baseline Security Analyzer (MBSA) :
یک ابزار مجانی ارائه شده از سوی مایکروسافت میباشد که قادر است یک کامپیوتر دارای ویندوز را در برابر وجود پیکربندی های اشتباه و یا به روز نبودن نرم افزارها بر اساس آخرین بهنگام سازی های امنیتی ارایه شده، چک کند.

ابزار SQLLiteSpeed :
SQL LiteSpeed یک نرم افزار پیشرفته برای تهیه ی پشتیبان از بانک های اطلاعاتی SQL Server، در قالب فایل های رمزنگاری شده است.

ابزار EnforcePass :
بسیاری از حملات بر اساس کشف کلمات عبور ضعیف و قابل حدس انجام می گیرند. این ابزار که در واقع یک تابع است، با توجه به معیارهای زیر، از بکارگیری کلمات عبور ضعیف توسط راهبر SQL Server و کاربران جلوگیری می کند.
* کلمه عبور نباید شامل کلمه شناسه ی عبور باشد.
* طول کلمه ی عبور باید بیش از شش باشد.
* کلمه ی عبور باید شامل حداقل یک حرف، یک رقم و یک کاراکتر از علایم باشد.
این تابع باید درون رویه های ذخیره شده sp_password و sp_addlogin موجود در SQL Server قرار گیرد.

ابزار AppDetective. for Microsoft SQL Server :
این نرم افزار یک ابزار برای برآورد کردن میزان امنیت برنامه های کاربردی موجود در شبکه ی شماست.
ابزار NGSSQuirreL :
NGSSQuirreL یک ابزار بررسی امنیت برنامه است که مخصوص Microsoft SQL Server طراحی شده است.
1- در این نوع حمله رمز عبور در برابر یک سری کلمات خاص که کاربر آنها را مشخص میکند، چک میشود.
2- در این نوع حمله رمز عبور در برابر تمام ترکیبات موجود کاراکترهای کشخص شده (حروف، ارقام و …) تا یک طول مشخص چک میشود.

امنیت در ورود به سیستم
زمانی که یک بانک اطلاعاتی جدید را در SQL Server تعریف می کنید، با کلیک سمت راست بر روی نام موتور پایگاه داده ای یک سرور درEnterprise Manager و انتخاب قسمت Properties، در زبانه security، موتور بانک اطلاعاتی امکان انتخاب دو روش مختلف در معرفی و یا شناسایی کاربران مجاز برای ورود به سیستم یا همان عمل احراز هویت (Authentication) را در دسترس قرار می دهد. البته بعد از ساخت یک بانک اطلاعاتی، با کلیک سمت راست بر روی نام آن بانک و انتخاب گزینه Properties و سپس security هم می توان روش مورد استفاده را تغییر داد. (شکل 1)

تصویر شماره 1
یکی از این دو روش که برمبنای ارتباط موتور این پایگاه داده با اکتیودایرکتوری ویندوز 2000 سرور بنا شده است و Windows only نام دارد، باعث می شود تا کاربران از قبل تعریف شده در دامنه (Domain) یک شبکه مبتنی بر ویندوز 2000 سرور، به رسمیت شناخته شوند. در این صورت نیازی به معرفی کاربر جدید و یا انتخاب دو نام کاربری برای یک نفر وجود ندارد و کاربر مذکور می تواند از همان نام کاربری و رمز عبوری که برای ورود به دامنه شبکه ویندوزی خود استفاده می کند، برای اتصال به بانک اطلاعاتی هم استفاده کند.
در روش دوم، ارایه مجوز دسترسی به کاربران با سیستمی خارج از محدوده دامنه ویندوزی صورت می گیرد. بدین صورت مدیر سیستم مجبور است برای کلیه کاربرانی که قصد اتصال به بانک را دارند، نام کاربری و رمزعبور جدیدی را تعریف کند.

تصویر شماره 2

تعریف کاربران
در صورتی که شیوه دوم تعریف کاربران را انتخاب کرده باشید، باید ابتدا لیستی از کاربران را به همراه رمزعبور مربوطه شان در قسمتی از صفحه Enterprise Manager که با عنوان Security مشخص شده، معرفی کنید. این کار با کلیک سمت راست بر روی گزینه Login در قسمت مذکور و سپس new login انجام می گیرد. انتخاب یک نام کاربری به همراه ورود رمزعبور تنها کاری است که باید در این جا انجام گیرد تا یک کاربر به طور عمومی در لیست کاربران یک موتور پایگاده داده قرار گیرد.

از این به بعد، وظیفه مدیر سیستم تعیین دسترسی کاربران تعریف شده در قسمت security، به بانک های مختلف تعریف شده در پایگاه است.
این کار نیز از دو طریق قابل انجام است. در روش اول، دسترسی به هر بانک اطلاعاتی از طریق همان قسمت security صورت می گیرد. کافی است بر روی هر کاربری که در این قسمت تعریف کرده اید، کلیک سمت راست کرده و ابتدا گزینه خصوصیات و سپس زبانه DataBase Access را انتخاب کنید. پس از آن لیستی از کلیه بانک های اطلاعاتی موجود در پایگاه به شما نمایش داده می شود که باید بانک موردنظر را انتخاب کرده و در ستون Permit کلیک موردنظر را انجام دهید. پس از این کار
می توانید یک نام نمایشی را برای نام کاربری مربوطه در ستون user تایپ کنید. در این جا به عنوان مثال امکان دسترسی کاربر mda را به بانک Northwind فراهم نموده و نام نمایشی <مهیار داعی الحق> برای آن انتخاب شده است (شکل 2). همان طور که مشاهده می کنید این کاربر به طور خودکار در گروه کاربری عمومی (public) بانک مذکور قرار داده می شود.

تصویر شماره 3
در روش دوم، به سراغ بانک اطلاعاتی موردنظر در لیست DataBases رفته و با کلیک سمت راست بر روی عبارتusers، گزینه New User را انتخاب می کنیم. حال در پنجره نمایش داده شده، باید از درون لیست Login name، یکی از کاربرانی را که قبلاً در قسمت security تعریف کرده ایم انتخاب کرده و نام نمایشی آن را هم در قسمت user name تایپ کنید. در این جا هم به صورت خودکار، کاربر مذکور در گروه کاربری Public برای آن بانک اطلاعاتی قرار می گیرد. (شکل 3)

نقش ها (Roles)
درSQL Server، می توان چندین کاربر را در یک گروه کاربری قرار داد. وقتی یک گروه کاربری تعریف می شود، دسترسی آن به قسمت های مختلف یک بانک اطلاعاتی و کلیه عملیاتی که اعضاء آن گروه می توانند انجام دهند، توسط مدیر سیستم تعیین می گردد. از این به بعد هرگاه کاربر جدیدی به آن گروه اضافه شود، نیازی به تعریف مجدد سطوح دسترسی و عملیاتی برای وی وجود ندارد و سطوح دسترسی به صورت خودکار از طرف گروه به عضو جدید اعطا می شود. درSQL Server به صورت پیش فرض تعدادی نقش (Role) وجود دارد که در واقع همان گروه های کاربری مذکور می باشد. هر کاربری که توسط مدیر سیستم به جمع کاربران اضافه می شود به طور خودکار در نقش public ظاهر می شود. نقش های از پیش تعریف شده و نحوه دسترسی و قابلیت عملیاتی آن ها عبارت هستند از:

1- db-accessadmin
کاربران تعریف شده در این نقش قادر خواهند بود، سطوح دسترسی و امنیتی کلیه کاربران و نقش ها را در قسمت های مختلف پایگاه تعریف کنند.

2- db-backupoperator
این نقش مسوول ایجاد نسخه های پشتیبان از سیستم و اطلاعات درون آن است.
3- db-datareader
این نقش قادر است کلیه اطلاعات تمام جداول بانک اطلاعاتی موجود در سیستم را بخواند. مگر آن که اطلاعات خاصی توسط مکانیسم Deny از دسترس او دور نگاه داشته شود.

4- db-datawriter
افراد تعریف شده در این نقش قادرند تا کلیه اطلاعات موجود در کلیه جداول بانک را با استفاده از دستورات سه گانهInsert ،UPdate ،Delete تغییر دهند. مگر آن که جدول یا فیلد خاصی توسط مکانیسم Deny از دسترس شان دور نگه داشته شود.
5- db-ddladmin
کاربران دارای این نقش می توانند ساختار جداول، دیدها، روتین ها و توابع یک بانک اطلاعاتی را با استفاده از دستورات سه گانه Create ،alter ،Drop، بسازند، تغییر دهند یا از بین ببرند.

6- db-denydatareader
این نقش قادر به خواندن هیچ اطلاعاتی از جداول یا سایر قسمت های بانک نیست.

7- db-denydatawriter
این نقش هم قادر به تغییر دادن هیچ یک از قسمت های بانک اطلا عاتی نیست.

8- db-owner
این نقش قادر به انجام هر عملی در بانک اطلاعاتی می باشد و بالاترین سطح موجود در یک بانک است.
9- db-securityadmin
مسوول تعریف و تنظیم نقش ها، کاربران و سطوح دسترسی در یک بانک است.

10- public
کاربران این نقش قادرند تمام جداول، دیدها و سایر قسمت هایی که توسط خودشان یا توسط کاربران متعلق به نقش dbowner ساخته شده را بخوانند و بنویسند.

تصویز شماره 4
اما به غیر از نقش های مذکور، مدیر سیستم هم می تواند به تناسب، نقش هایی را در سیستم تعریف کند. به عنوان مثال فرض کنید که در یک واحد حسابداری، کارمندان عادی آن قسمت، موظف به وارد کردن اسناد مالی به یکی از جداول بانک اطلاعاتی با استفاده از یک برنامه ویژوال بیسیک هستند. مدیر مالی نیز توسط دکمه موجود در همان برنامه قادر است یک روتین ذخیره شده (stored procedure) را فراخوانی کرده تا اسناد وارد شده را تایید کند. بنابراین فقط کاربر مربوط به مدیر مالی حق اجرای روتین مذکور را دارد. برهمین اصل مدیر پایگاه یک گروه به نام <حسابداران> را برای ورود اسناد و گروه دیگری را به نام <مدیر مالی> برای مدیریت آن دپارتمان و جانشینان احتمالی وی در نظر می گیرد و برای گروه اول، اجرای روتین مذکور را در حالت ممنوع (Deny) و برای گروه دوم، در حالت مجاز (Allow) قرار می دهد. شما می توانید برای تعریف یک گروه یا نقش جدید، بر روی آیتم Roles کلیک سمت راست کرده و گزینه New Role و سپس یک نام دلخواه را انتخاب کرده و آن گاه با کلیک بر روی دکمه Add کاربران از قبل تعریف شده تان را یک به یک به جمع آن گروه اضافه نمایید. شایان ذکر است که هر کاربر می تواند جزء چند گروه یا نقش باشد. در ادامه باید در همان پنجره مذکور با کلیک بر روی دکمه مجوز (Permission)، دسترسی و قابلیت عملیاتی آن گروه را هم تعریف کنید. (شکل 4)

انواع مجوزها
1- جداول اطلاعاتی و دیدها

تصویر شماره 5
در مورد یک جدول بانک اطلاعاتی شما می توانید امکان انجام پرس وجو، درج، تغییر، حذف و تعریف وابستگی را به ترتیب با علا مت زدن در ستون های SELECT ،UPDATE ،DELETE و DRI برای یک گروه یا کاربر، ممکن یا غیرممکن کنید. در ضمن در صورتی که بخواهید بر روی تک تک فیلدها، قواعدی را وضع کنید می توانید بر روی دکمه Colums هر جدول کلیک کرده و امکان آوردن آن فیلد را در یک عبارت پرس وجو (SELECT) و یا امکان تغییر آن فیلد را در یک عملیات UPDATE برای گروه یا کاربر موردنظر مشخص کنید. (شکل 5) لازم به ذکر است که همین عملیات برای دیدهای (View) یک بانک هم قابل انجام است.
2- روتین ها و توابع

تصویر شماره 6
در مورد روتین ها و توابع تعریف شده (User Defined Fonction) فقط یک ستون مجوز به نام Exec و آن هم به معنی امکان استفاده یا عدم استفاده وجود دارد که توسط مدیر سیستم تنظیم می شود. (شکل 6)

3- مجوزهای اساسی
به غیر از عملیات عمومی سیستم مثل جستجو، درج، تغییر، اجرای روتین و… که در بالا ذکر شد، در SQL serverامکانات ویژه ای نیز برای کاربردهای خاص در نظر گرفته شده که فقط در مواقع لزوم به برخی کاربران یا نقش ها اعطا می شود. اگر بر روی نام هر بانک اطلاعاتی موجود در سیستم مثل Northwind، کلیک راست کرده و آیتم خصوصیات را انتخاب کنید، در زبانه آخر یعنی Permission لیستی از نقش ها و کاربرهای موجود در سیستم را مشاهده می کنید که در جلوی نام هر یک از
آن ها و در 8 ستون به ترتیب از چپ به راست امکان ساخت جدول، دید، روتین، مقادیر پیش فرض، قواعد، توابع، پشتیبان گیری از اطلاعات و پشتیبان گیری از لاگ ها وجود دارد که در مواقع خاصی قابل اعطا به کاربران با نقش های مختلف می باشد. به عنوان مثال اگر برنامه نویس قصد داشته باشد تا برای فراهم ساختن امکان تهیه یک گزارش پیچیده، به کاربری اجازه اجرای دستور CREATE VIEW را از داخل یکی از فرم های برنامه ویژوال بیسیک خود بدهد، باید قبلاً مدیر پایگاه را مطلع نموده تا وی ستون Create View را برای آن کاربر، فعال نماید. همین عمل جهت ساخت جداول موقت برای گرفتن گزارش یا سایر عملیات پیچیده هم وجود دارد و از طریق ستون Create Table قابل انجام است.

تصویر شماره 7
در این صورت کاربر می تواند با استفاده از دستوراتی که منتهی به ساخت جدول می شود مثل Create Table یا Select INTO جداول موقتی را توسط برنامه ویژوال بیسیک مورد استفاده خود ایجاد نموده و پس از پایان کار با استفاده از دستور DROP آن ها را حذف نماید. (شکل 7)

نظارت بر عملکرد سیستم :
یکی از اساسی ترین کارهایی که بعد از پیاده سازی یک بانک اطلاعاتی و در حین استفاده کاربران از آن باید صورت گیرد، نظارت دقیق بر رفتار سیستم و بررسی واکنش هایی است که آن بانک اطلاعاتی در شرایط خاص و ضمن استفاده های متنوع کاربران مختلف از خود نشان می دهد. بنابراین این نظارت دایمی باید طبق اصول خاص و یک برنامه منظم و با استفاده از امکاناتی که بانک اطلاعاتی در اختیار مدیریت سیستم قرار می دهد انجام گیرد تا از بروز مشکلات احتمالی جلوگیری به عمل آید. این مشکلات به طور کلی به سه دسته عمده کُند شدن سرعت جستجو در سیستم (Query performance problem) ،کم شدن تعداد فرایندهای قابل اجرا در واحد زمان (Transactions Throughput problem) ،کاهش کارایی سیستم در اثر افزایش کاربران و تداخل کارهای آن ها در یکدیگر ( Concurrent users problem) تقسیم می شود. برای این منظور در SQLerver ابزارهای خاصی برای مانیتورینگ سیستم درنظر گرفته شده تا مدیر سیستم بتواند به موقع نقاط ضعف سیستم (از لحاظ نرم افزاری یا سخت افزاری) را شناسایی کرده و قبل از این که سیستم را دچار بحران نماید یا این که کار به گله مند شدن کاربران بیانجامد با مشورت طراحان، برنامه نویسان و مسوولین شبکه راه حل مناسبی برای آن مشکل پیدا کند. در صورت کشف مشکل مذکور، ایجاد تغییراتی در روابط منطقی یا فیزیکی جداول بانک اطلاعاتی توسط طراحان بانک، بهینه سازی کدهای برنامه نویسی شده و رفع نقاط ضعف آن توسط برنامه نویسان و ارتقای سخت افزار شبکه و سرور بانک اطلاعاتی توسط مسوولین شبکه می تواند راهگشای بسیاری از این نوع معضلات به حساب آید. در SQL Server یک ابزار مناسب برای مانیتورینگ یک بانک اطلاعاتی وجود دارد که در این جا به معرفی آن می پردازیم.

SQL Server Profiler
این ابزار در واقع برنامه ای است که قادر به اشکال زدایی دستورات SQL می باشد. هر نوع دستور SQL که به تنهایی یا از داخل یک برنامه یا از طرف یک روال ذخیره شده (Stroed Procedvre) و یا هر جای دیگر اجرا شود توسط این برنامه شناسایی و ثبت می شود. سپس برنامه مذکور عمل تجزیه وتحلیل خود را بر روی این دستور SQL انجام داده و نتایج آن را به مدیر سیستم نمایش می دهد.

نحوه کار برنامه
برنامه پروفایلر لیستی از رخدادهایی را که قادر به تعقیب آن ها است در اختیار کاربر قرار می دهد. این رخدادها پس از انتخاب کاربر در درون یک صف (Queue) قرار گرفته و هرگاه یکی از رخدادها به وقوع بپیوندد، پروفایلر شرح کاملی از جزییات آن را در یک فایل جهت گزارشی به مدیر سیستم، ثبت می کند. این عملیات تعقیب که در پروفایلر به آنTrace گفته می شود کاملاً توسط کاربر قابل تنظیم است.
رخدادهای قابل تعقیب توسط پروفایلر به انواع مختلفی تقسیم بندی می شوند که در قسمت Events از منویWewTrace یعنی زمانی که کاربر قصد تعریف یک تعقیب جدید را دارد، مشاهده می شوند.

1- Cursors
این مجموعه رخدادهای مربوط به اتفاقاتی است که باعث ایجاد شدن، مورد استفاده قرار گرفتن و حذف شدن یک دسته رکوردهای اطلاعاتی از یک یا چند جدول می شود. همان طور که می دانید در SQL Server می توان با استفاده از دستور SELECT تعدادی از جداول بانک اطلاعاتی را با هم لینک کرده و مجموعه رکوردهای اطلاعاتی مربوطه را در یک گروه به نام کرسر قرار داد (همان چیزی که در زبان های برنامه نویسی مثل ویژوال بیسیک به آن Recordset گفته می شود) هر عملی که باعث ایجاد شدن یا هر نوع عملیات دیگر بر روی یک کرسر شود می تواند مورد تعقیب پروفایلر قرار گرفته و ثبت شود.

2- Data Base
این مجموعه از رخدادها مربوط به فایل های داده ای یک بانک اطلاعاتی است. هر تغییری که در سایر فایل های داده ای و فایل های لاگ یک بانک ایجاد شود در این مجموعه قرار می گیرد.

3- Errors and Warning
مقام پیام های خطا و هشدار که در زمان اجرای دستورات SQL یا در زمان کامپایل و اجرای SPها و یا Triggerها به کاربر داده می شود و همچنین خطاهای مربوط به OLE DB در این گروه قرار می گیرد.
4- Locks
این گروه از رخدادها، بیشتر زمانی مورد استفاده قرار می گیرد که یک برنامه کاربردی در قفل کردن و آزاد کردن رکوردهای جداول بانک اطلاعاتی دچار ضعف و اشتباه می شود.
همان طور که می دانید بسیاری از برنامه های کاربردی در مقاطع زمانی خاص اقدام به قفل کردن یک یا چند جدول اطلاعاتی می کنند که این کار و همچنین آزاد کردن آن جداول باید با حساسیت و دقت خاصی انجام شود تا در کار بقیه کاربران اخلال ایجاد نکند اما متاسفانه بسیاری از این نوع برنامه ها خصوصاً برنامه هایی که قدمت چندانی ندارند اغلب از این لحاظ دچار بی دقتی و ضعف زیادی هستند.

5- Scans
هر عملی که در حافظه اصلی تخصیص داده شده به SQL server قابل دستیابی باشد در این دسته قرار می گیرد. به خصوص عملیات مربوط به Cache که در داخل موتور بانک اطلاعاتی انجام می شود جزو این دسته محسوب می شوند.
6- Stored procedveres
شامل کلیه وقایعی که ممکن است برای یک روال رخ دهد می باشد. کامپایل، فراخوانی، شروع اجرا، وضعیت در حال اجرا، پایان اجرا، همگی از جمله رخدادهای قابل وقوع در این دسته می باشند.

7- TSQL
این نوع رخدادها شامل کلیه وقایعی است که باعث اجرای هر یک از دستورات زبان TSQL به صورت تکی یا دسته ای (Batch) می شود. دستورات SELECT ،Insert ،UpdATE ، DELETE و … هر کدام آغاز و پایانی مشخص با نتایج معین در یک بانک اطلاعاتی دارند که می توانند به وسیله این نوع رخداد مورد بررسی قرار گیرند.

تصویر شماره 1
8- Transaction
در این دسته، کلیه وقایع مربوط به فرآیند از جمله شروع (BEGIN) تایید
(Commit) و بازگشت (Roll Back) قرار می گیرند. هر فرآیند شامل چند دستور SQL می باشد که یا باید همگی بدون اشکال اجرا شوند و یا این که هیچکدام اجرا نگردند.
اهمیت فرآیند و استفاده مناسب از آن ها در یک بانک اطلاعاتی و برنامه کاربردی مربوط به آن جای هیچ گونه تردیدی را برای وجود ابزاری جهت ثبت و مانیتورینگ وقایع باقی نمی گذارد. لذا این دسته از رخدادها همانند رخدادهای SQL یکی از پرکاربردترین رخدادها قلمداد می شوند.

9- Session
این دسته از وقایع شامل کلیه رخدادهای مربوط به اتصال کاربران به بانک اطلاعاتی (login) و خروج از آن (logout) یا قطع اتصال در اثر بروز هر عاملی (Disconnect) می باشد و برای کنترل و رفع ایراد ورود و خروج کاربران به سیستم مورد استفاده قرار می گیرد.

اجرای آزمایشی یک Trace

تصویر شماره 2
برای شروع، می خواهیم یک تعقیب آزمایشی برای ثبت برخی رخدادهای قابل وقوع در سیستم با استفاده از پروفایلر بسازیم. برای این کار برنامه Profiler را اجرا کرده و منوی New Trace را کلیک می کنیم تا لیستی از وقایع قابل ثبت که آن ها را در قسمت قبل شرح دادیم ظاهر شود. در قسمت General کافی است یک نام برای Trace موردنظر انتخاب کرده و سپس یک مسیر برای درج فایل حاوی لاگ رخدادهای مذکور، به پروفایلر معرفی کنیم. لازم به ذکر است که پروفایلر قادر است به جای یک فایل، لاگ های تولید شده را در یکی از جداول همان بانک اطلاعاتی ذخیره کند. همچنین اگر مایل باشید که هیچ لاگی برای شما ثبت نشود، پروفایلر می تواند صرفاً لاگ ها را در قالب یک پنجره در داخل خود برنامه به صورت یک لیست به شما نشان دهد (شکل 1).
در ضمن در داخل همین پنجره می توانید یک الگوی پیش ساخته را که قبلاً توسط خودتان یا دیگران تنظیم شده مورد استفاده قرار دهید تا در قسمت بعد که می خواهید رخدادها را از داخل لیست انتخاب نمایید دچار مشکل نشوید. البته برنامه پروفایلر به صورت پیش فرض الگوی استاندارد خودش برای نظارت بر عملکرد کاربران و موتور پایگاه داده را به نام SQL Profilerstandard به شما پیشنهاد می کند که کافی است با قبول کردن آن به زبانه Events بروید. در آن جا طبق الگوی مذکور، یک سری از رخدادها از داخل لیست سمت چپ به صورت اتوماتیک انتخاب شده و جهت لاگ شدن در لیست سمت راست قرار می گیرد، علاوه برای این که شما هم می توانید با استفاده از دو کلیدAdd و Remove رخدادهای موردنظر خودتان را جهت لاگ شدن به لیست سمت راست، اضافه یا کم کنید (شکل 2).
در این جا فرض بر این است که قصد ما ساختن یک Trace برای کنترل و نظارت بر دستورات SQL در حال اجرا توسط کاربر مدیر سیستم یعنی sa می باشد بنابراین کافیست صرفاً مجموعه زیر گروه TSQL را در لیست سمت راست نگه داریم و بقیه را با کلید Remove به سر جای خود یعنی لیست سمت چپ برگردانم.

تصویر شماره 3

در قسمت بعد باید ستون های مورد استفاده لاگ را مشخص کنیم. با این کار پروفایلر اطلاعات مربوط به لاگ های تولید شده را به شکل مناسبی که ما می خواهیم تولید می کند این انتخاب در زبانه Data Coloumns قابل تنظیم است. به عنوان مثال ستون TextData متن عبارت SQL در حال اجرا را نشان می دهد یا این که ستون Application نام برنامه کاربردی که این دستور SQL از طرف آن برنامه، اجرا شده را مشخص می نماید. بهتر است در این مرحله کلیه ستون های پیش فرض انتخاب شده توسط پروفایلر را قبول کرده و به مرحله آخر یعنی فیلتر کردن اطلاعات برسیم (شکل 3).

تصویر شماره 4
در زبانه فیلتر (Filter) امکان محدود کردن نمایش اطلاعات لاگ شده (منظور ردیف های آن اطلاعات است) به کاربر داده می شود. به عنوان مثال چون هدف ما صرفاً نمایش دستورات SQL اجرا شده توسط کاربر sa است، به همین دلیل یک فیلتر بر روی ستون User DataBase تعریف کرده و قسمت like آن را به کلمه sa انتساب می دهیم. حتی اگر باز هم قصد محدودتر کردن گزارش را داشته باشید می توانید روی ستون های دیگر هم فیلتر بگذارید. مثلاً برای این که صرفاً دستورات DELETE کاربر مذکور به شما نشان داده شود می توانید در همین جا علاوه بر فیلتر قبل، یک فیلتر جدید بر روی ستون Text Data تعریف کرده و عبارت LIKE آن را به کلمه DELETE منتسب کنید (شکل 4).

پس از طی مراحل فوق، اکنون نوبت به اجرای Trace مذکور می رسد این کار از طریق کلیک بر روی دکمه Run انجام می گیرد. بلافاصله یک پنجره جدید حاوی ستون هایی که ما در قسمت Coloumns انتخاب کرده بودیم نمایش داده می شود. این لیست بعد از انجام هر دستور SQL که شرایط موردنظر ما در قسمت Filter برآورده کند به روز (Refresh) می شود و کلیه دستورات مذکور را به ترتیب زمان انجام، در درون لیست قرار می دهد (شکل 5).

تصویر شماره 5
انتقال اطلاعات با Replication :
معرفی
Replication راه حلی برای انتقال اطلاعات از یک بانک اطلاعاتی SQL server به یک بانک اطلاعاتی دیگر از همان نوع و البته مستقر در یک محل و کامپیوتر دیگر است. این فرآیند توسط ایجاد یک کپی از اطلاعات موجود در مبدا و انتقال آن به مقصد صورت می گیرد. در این ارتباط اطلاعاتی، اصطلاحاً به کامپیوتر و بانک اطلاعاتی مبدا، ناشر(publisher) و به کامپیوتر و بانک اطلاعاتی مقصد، مشترک یا متعهد (subscriber) می گویند. البته این نوع رابطه، با وجود تنها یک ناشر اما یک یا چند مشترک امکان پذیر است. بدین معنی که اطلاعات یک بانک اطلاعاتی در مبدا قابل انتقال به چند مقصد مختلف است. از نسخه 7 به بعدSQL Server امکان تغییر اطلاعات در مقصد و انتقال آن به مبدا نیز وجود دارد. با این وصف، این رابطه داده ای بین ناشر و مشترک ممکن است گاهی اوقات برعکس شود و جای مبدا و مقصد در یک مقطع زمانی عوض شود. این قابلیت یکی از ویژگی های مهم SQL Server است که در نسخه های قدیمی آن وجود نداشت. بدین ترتیب یک کامپیوتر مشترک یا مقصد می تواند گاهی اوقات نقش ناشر یا مبدا را در همان رابطه بازی کند. به این قابلیت جدید Multi site update می گویند.
درSQL Server، سه نوع انتقال اطلاعات از طریق Replication وجود دارد. هر کدام از این سه راه، سناریوی خاصی برای انتقال اطلاعات از مبدا به مقصد و یا برعکس را مدیریت می کنند که در ادامه به بررسی آن ها می پردازیم.
1- انتقال اطلاعات به روش ادغام (Merge)
این نوع انتقال اطلاعات که از قابلیت Multi site هم پشتیبانی می کند، زمانی مورد استفاده قرار می گیرد که استقلال داخلی هر بانک اطلاعاتی طرف یک رابطه، به رسمیت شناخته می شود. بدین معنی که در یک رابطه انتقال اطلاعات، هر کامپیوتر ضمن حفظ ساختار بانک اطلاعاتی خود، هم می تواند نقش ناشر را داشته باشد و هم نقش مشترک را ایفا نماید. در این حالت هر تغییری در جداول مشترک هر طرف، بلافاصله در طرف دیگر هم اِعمال می شود. نکته مهمی که در این جا مطرح است این است که چطور طرفین این ارتباط متقابل باید با هم هماهنگ باشند و اولویت یکدیگر را به رسمیت بشناسند. به عنوان مثال فرض کنید در یک زمان واحد، هر دو طرف بخواهند اطلاعاتی را در مورد یک جدول بانک اطلاعاتی به یکدیگر ارسال کنند. (یعنی بروز حالت تداخل) این مشکل با استفاده از روش خاصی که هر نوع Replication مخصوص خودش دارد، قابل حل است. به طور کلی در حالت ادغام، یک پایگاه داده حایل میان ناشر و مشترک به عنوان توزیع گر (Distributor) ساخته می شود. این پایگاه داده به نامDistribution در لیست پایگاه های داده ای ناشر قرار می گیرد و وظیفه ایجاد همزمانی (synchronization) بین ناشر و مشترکین را ایفا می کند.
پایگاه داده توزیع گر هم می تواند در سمت ناشر و هم در یک کامپیوتر میانی دیگر (غیر از کامپیوترهای سمت مشترک) قرار داشته باشد. این پایگاه داده ضمن ایجاد همزمانی در ردوبدل اطلاعات بین ناشر و مشترک، این امکان را نیز فراهم می سازد تا مدیر سیستم بتواند اولویت و در واقع ارجحیت جهت انتقال اطلاعات در زمان بروز تداخل را مشخص کند. این اولویت (priority) در زمان تعریف طرف های ناشر و مشترک یک Replication از نوع ادغام توسط مدیر سیستم تنظیم می شود.

2- تصویربرداری از اطلاعات (snapshot)
در این روش ابتدا یک تصویر کامل از آنچه که باید از سمت ناشر به سمت مشترک برود تهیه می شود. این تصویر هم شامل خود ساختار آنچه که منتقل می شود (مثلاً ساختار یک جدول) و هم شامل اطلاعات داخل آن است. در ابتدای کار، تصویر مذکور عیناً به مشترک فرستاده می شود و سپس از این به بعد هر تغییری که در سمت ناشر انجام شود بلافاصله به طرف مشترک هم فرستاده می شود. روند و توالی ارسال این تغییرات هم همانند حالت قبل (ادغام) طی یک فاصله زمانی مشخص مثلاً ساعتی یک بار که توسط مدیر سیستم قابل تنظیم است، انجام می گیرد.
یکی از مزایای این روش نسبت به حالت ادغام، این است که زمان کمتری از وقت مدیر سیستم را جهت پیکربندی و تنظیم عمل انتشار صرف می کند و به دلیل این که در ابتدای عمل انتشار، خود ساختار نیز عیناً به مشترک منتقل می شود، از قابلیت اطمینان بیشتری برخوردار است. به طور کلی کاربرد این نوع انتقال اطلاعات، زمانی است که مدیر سیستم قصد ایجاد یک ارتباط ساده یک طرفه ولی مطمئن را دارد.

3- انتقال براساس فرآیند (Transactional)
این روش یکی از بهترین و قابل کنترل ترین روش های انتقال اطلاعات است. در این روش هر تغییری که در جداول ناشر صورت گیرد، به صورت یک دستور SQL درآمده و تحت یک فرآیند واحد هم در سمت ناشر و هم در سمت کلیه مشترکین اجرا می شود. در این صورت اگر به طور مثال یکی از مشترکین به دلیلی با اشکال مواجه شده و تغییر موردنظر در آن انجام نشود، این تغییر نه در خود ناشر و نه در هیچ کدام از مشترکین دیگر نیز انجام نخواهد شد. بدین معنی که یا یک تغییر در اطلاعات، برای تمام کامپیوترها اعم از ناشر و کلیه مشترکین انجام می شود و یا این که برای هیچ کدام انجام نخواهد شد در این حالت هم یک پایگاه داده واسطه به نام Distribution نقش دریافت و ارسال فرآیند را به طرف مشترک ایفا می کند. در واقع روش فرآیند، در مقایسه با دو روش قبل از حالت به هنگام (online) بودن بیشتری برخوردار است. یعنی این که هر فرآیند و هر دستور در همان لحظه که می خواهد در ناشر اجرا شود، به واسط فرستاده شده و سپس در یک زمان واحد در کلیه مشترکین نیز انجام می شود و در واقع زمان تغییر اطلاعات در ناشر و در مشترکین تقریباً یکسان است. همچنین در این روش تداخلی هم پیش نمی آید. چون هر تغییری ابتدا باید به واسط فرستاده شود و از آن جا به جاهای دیگر ارسال شود و واسط هم آن ها را در یک صف اولویت (priority queue) قرار داده و به ترتیب انجام می دهد. نتیجه این نوع انتقال اطلاعات، داشتن چند پایگاه داده کاملاً یکسان و به هنگام در مکان های مختلف است که همگی از یک ناشر، اطلاعات موردنظر را دریافت می کنند.

تعریف ناشر و مشترکین
برای تعیین یک SQL Server به عنوان ناشر، کافی است یک رابطه Replication برای آن تعریف کرده و پس از انجام تنظیمات مربوطه و طی مراحل خاص هر یک از سه نوع انتقال اطلاعات، آن کامپیوتر را به عنوان مبدا یا ناشر یک فرآیند انتقال معرفی کنیم. در همین حین و برای ایجاد پایگاه داده واسط یا همان توزیع گر (Distributor) هم می توان وارد عمل شده و خود ناشر را به عنوان توزیع گرِ آن فرآیندِ انتقال معرفی کنیم. پس از این کار نوبت به تعریف مشترکین می رسد. برای تعریف یک مشترک از دو راه می توان اقدام کرد، که هر یک کاربرد مخصوص به خود را دارند. در روش اول که فرستادن اطلاعات به طرف یک مشترک است و در اصطلاح push نامیده می شود، معرفی مشترک از سمت ناشر انجام می شود. بدین معنی که مدیر سیستم می تواند بلافاصله پس از تعریف یک ارتباط و ناشر آن از همان لحظه و در همان محل استقرار ناشر، مشترکین را یک به یک به این نوع ارتباط دعوت و اضافه کند و اطلاعات را به سمت آن ها بفرستد. این ارتباط به دلیل این که کاملاً از طرف ناشر، کنترل می شود، از حالت به هنگام بیشتری
(online) برخوردار است و اطلاعات بلافاصله به سمت مشترک فرستاده می شود. در روش دوم که Pull نام دارد، تعریف مشترک از سمت خودش انجام می شود و در واقع این مشترک است که اطلاعات را از ناشر طلب می کند. این حالت بیشتر در مواقعی کاربرد دارد که اولاً تعداد مشترکین از قبل برای ناشر مشخص نیست و ثانیاً بروز بودن اطلاعات در آن واحد از اهمیت حیاتی برای سیستم برخوردار نیست و انتقال اطلاعات می تواند با تاخیر و با درنگ زمانی و در زمان دلخواه مشترک نجام شود.
طرح یک مساله
فرض کنید می خواهیم با استفاده از مکانیسم Replication، اطلاعات موجود در بانک اطلاعاتی Northwind را از یک پایگاه داده SQL Server به نام server به یک بانک اطلاعاتی به همان نام و بر روی یک پایگاه داده دیگر مستقر در یک سرور راه دور به نام Home server منتقل کنیم. برای این کار می توانیم از هر کدام از سه روش انتقال اطلاعات، استفاده نماییم.

مراحل ایجاد ناشر
برای این کار، در پنجره Enterprise Manager، بر روی گزینه Publication از آیتم Replication کلیک سمت راست نموده و فرمان New را انتخاب می نماییم. با آغاز ویزارد مخصوص، کلید Next را کلیک کرده و در صفحه بعد در پاسخ به این سوال که آیا می خواهید پایگاه داده توزیع گر (Distributor) در همین کامپیوتر ساخته شود یا خیر، گزینه اول یعنی خود کامپیوتر server را انتخاب می کنیم و به مرحله بعد می رویم (شکل 1).

در پنجره بعدی از کاربر خواسته می شود تا فولدری را جهت قرار دادن فایل های مربوط به عملیات انتقال مشخص کند. وجود این فولدر برای انجام عمل Distribution ضروری است و باید طوری انتخاب شود که در شبکه ای که قرار است مشترکین به آن بپیوندند قابل دسترسی باشد. پس از انتخاب این فولدر و کلیک بر روی کلید Next، در مرحله بعد نام بانک اطلاعاتی موردنظر یعنی Northwind را از داخل لیست انتخاب کرده و به مرحله اصلی یعنی انتخاب نوع Replication می رسیم که در این جا همان گزینه اول یعنی snapshot را انتخاب می کنیم (شکل 2).

سپس در مرحله بعد باید هر موجودیتی اعم از جداول و روال هایی، را که می خواهیم در این عملیات انتقال وجود داشته باشند، معرفی کنیم برای مثال جدول مشتریان (customers) را از داخل لیست جداول علامت زده و به مرحله بعد می رویم. (شکل 3) در مرحله بعد یک نام برای عملیات انتقال انتخاب کرده و کلید Next را می زنیم و در نهایت با کلیک بر روی عبارت Finish عملیات را پایان می دهیم.

مراحل ایجاد مشترکین
1- روش Pull (از طریق مشترک)
برای ایجاد یک مشترک با روش pull، به کامپیوتر مشترک مراجعه کرده و بر روی گزینه subscription کلیک سمت راست کرده و فرمان New pull را انتخاب می کنیم. سپس از داخل پنجره بعدی گزینه دوم یعنی Look in the Active Directory را انتخاب می نماییم (شکل 4).

در مرحله بعد نام ناشر و سپس نام بانک اطلاعاتی موردنظر، نام عمل نشر که در ناشر تعریف کردیم و سپس رمز عبور مربوط به یک کاربر معتبر در ناشر مثلاً کاربر sa را وارد می نماییم. (شکل 5)

در قسمت بعد هم نام بانک اطلاعاتی مقصد را که همان Northwind است انتخاب می نامیم. پس از طی چند مرحله دیگر که نیاز به تغییری در آن ها نیست و صرفاً با کلیک بر روی کلید Next،مقادیر پیش فرض را تایید می کنیم به مرحله انتخاب توالی زمانی به روز شدن مشترک می رسیم. در این جا هم باید بین سه روش مختلف یعنی حالت های بلادرنگ، زمان دار، براساس درخواست، یکی را انتخاب کنیم که در این جا همان نوع اول یعنی بلادرنگ را انتخاب می نماییم (شکل 6).

با این کار مراحل تعریف یک مشترک از طریق pull پایان می پذیرد. اما نکته مهمی که در این جا باید به آن اشاره کنیم این است که برای فراهم ساختن امکان تعریف مشترکین از طریق pull حتماً باید این اجازه را قبلاً و از طریق ناشر به کاربران مشترک داده باشیم.
برای این کار، قبل از تعریف مشترک، باید در کامپیوتر ناشر، بر روی نام عملیات انتقال ایجاد شده کلیک سمت راست کرده و گزینه خصوصیات (properties) را انتخاب نماییم. سپس زبانه subscription option را باز کرده و مطمئن شویم که گزینه های Allow anonymous و همچنین Allow Pull در حالت تایید شده باشند (شکل 7).

2 – روش push (از طریق ناشر)
برای تعریف یک مشترک با استفاده از روش push، به کامپیوتر ناشر مراجعه کرده و بر روی نام عملیات نشر که قبلاً ایجاد کرده ایم کلیک سمت راست می کنیم. سپس روی گزینه push new کلیک می کنیم. با شروع مراحل ویزارد، نام کامپیوتر مشترک را از لیست انتخاب می کنیم (شکل 8).

در مراحل بعدی با معرفی بانک اطلاعاتی Northwind به عنوان مقصد به پنجره ویژه تعریف زمان به روز شدن مشترک می رسیم که از بین دو نوع بلادرنگ و زماندار قابل انتخاب است. که باز هم نوع اول را انتخاب می کنیم. در مرحله بعد هم مطمئن می شویم که گزینه start snapshot agent در حالت تایید قرار دارد و سپس با چند کلیک بر روی کلیدNext عملیات را پایان می دهیم. نکته بسیار مهمی که برای تعریف مشترک از طریق روش push باید در نظر داشته باشیم این است که برای ظاهر شدن نام هر مشترک در لیست انتخاب که در شکل 8 ملاحظه کردید، باید قبلاً این مشترک با استفاده از عملیات Registration در کامپیوتر ناشر تعریف شده باشد. در غیر این صورت نام آن در داخل لیست مشترکین ظاهر نمی شود. عمل مذکور هم در یک محیط شبکه ای بسیار آسان است. کافی است بر روی SQL Server Group در کامپیوتر ناشر کلیک راست کرده و با انتخاب New Registration و وارد کردن نام مشترک این کار را انجام دهیم.

امکانات جدید SQL Server :
Snapshot Isolation Level
یکی از روش هایی که به انواع متدهای قفل کردن ردیف های یک جدول بانک اطلاعاتی در نسخه جدید اضافه شده است، شیوه تصویربرداری از رکورد است. در روش های قبلی، اگر یک یا چند رکورد بانک اطلاعاتی توسط دستور BeginTrans که شروع یک فرآیند را مشخص می کند در شرف تغییر یا حذف قرار می گرفتند، تا مادامی که فرآیند مذکور توسط دستور Commit Trans تایید یا توسط RollBack منتفی نشود، از هیچ جا و برنامه ای نمی توان رکوردهای مذکور را حتی با دستور ساده SELECT خواند. اما در روش جدید قفل گذاری، در صورت بروز چنین رویدادی سایر کاربران می توانند همواره آخرین ارزش رکوردهای مذکور را با این فرض که هنوز هیچ تغییری در آن ها ایجاد نشده است بخوانند و مورد استفاده قرار دهند.

باز هم دات نت
با نسخه جدید SQL Server، برنامه نویسان بانک های اطلاعاتی قادرند از امکانات و قابلیت های موجود در پلتفرم دات نت و کلیه توابع و کلاس های ساخته شده در آن بهره مند شوند. یکی از ابتدایی ترین و در عین حال اساسی ترین این قابلیت ها، امکان استفاده از دو زبان مهم و کاربرپسند دات نت یعنی ویژوال بیسیک و سی شارپ در پیاده سازی اجزای مختلف یک بانک اطلاعاتی است. این عامل نه تنها باعث می شود که برنامه نویسان برای نوشتن ماژول هایی مثل تریگرها، روال ها (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 به اطلاعتان می رساند.
علاوه براین قابلیت جدید، فناوری جدید دیگری هم با استفاده ازADO.NET به نسخه جدید SQLServer اضافه شده و آن امکان چند پرس وجوی همزمان توسط یک شی ADO است. در این شیوه اگر یک شی ADO با استفاده از دستور SELECT مشغول خواندن تعدادی از رکوردهای یک جدول بانک اطلاعاتی باشد، می تواند بدون این که منتظر به پایان رسیدن این عملیات شود، تعداد دیگری از رکوردهای یک جدول دیگر بانک اطلاعاتی را بخواند. این قابلیت جدید با نام (Multiple Active Result Set (MARS که قبلاً فقط در کرسرهای سمت سرور (server side) و آن هم نه با کارایی بالا وجود داشت اکنون در کرسرهای سمت راست کلاینت هم وجود دارد و تفاوت عمده آن با شکل قدیمی هم علاوه بر مورد مذکور، امکان ایجاد چند کرسر در یک شی ADO به صورت همزمان است. SQLServer نسخه 2005 به خوبی از تمام این ویژگی ها، پشتیبانی می کند.

تکنولوژی XML
اکنون که XML به یک استاندارد ارتباطی بین سکوهای مختلف تبدیل شده است، نسخه جدید SQLServer هم از توجه کافی به آن و ایجاد یک انقلاب در ساده تر استفاده کردن از آن طفره نرفته است. در نسخه 2000 کاربران قادر بودند تا با استفاده از دستور FOR XML نتیجه یک پرس وجوی SELECT از یک بانک اطلاعاتی را به درون یک فایل XML بریزند یا مثلاً با دستور OPEN XML می توانستند یک فایل XML را باز کرده و شروع به خواندن دستورات درون آن نمایند.
از آن جا که در نسخه جدید SQLServer توجه خاصی به این استاندارد و زبان ارتباطی شده است، یک نوع داده جدید (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 را بخواند استفاده کرده و به سرعت به اطلاعات موردنیاز خود دسترسی پیدا کنند. این قابلیت جدید آن قدر در سریع تر کردن جستجو در برنامه های تحت وب مهم و موثر است که جای هیچ مشکلی را در استفاده از آن باقی نمی گذارد.

سرویس اعلان (Notification)
همان طور که گفتیم سیستم اعلان درSQLServer قادر است پیغام هایی را طی زمان های مشخص به سمت کاربران بفرستد. مثلاً تصور کنید که تعدادی کاربر در حال اتصال به یک بانک حاوی اطلاعات مربوط به ارزش سهام در بورس هستند. از آن جایی که ممکن است قیمت سهام هر شرکت یا موسسه برای تعدادی از کاربران از اهمیت زیادی برخوردار باشد، می توان این سیستم را طوری تنظیم کرد تا هرگاه ارزش سهام خاصی که موردنظر هر کاربر است تغییر کرد، به صورت اتوماتیک به وی اعلام شود. کاربر هم می تواند این تغییرات را برروی برنامه کاربردی خود، تلفن همراه (در قالب Windows Messenger ،(SMS و یا ایمیل به صورت مرتب دریافت و مشاهده کند.

سرویس گزارش گیری
سرویس جدید تولید گزارش های متنوع در نسخه 2005 به یکی از جالب ترین و پرکاربردترین قابلیت های این نسخه تبدیل شده است، وجود یک موتور گزارشگر قوی در سمت سرور و یک ابزار مناسب ساخت گزارش با واسط کاربر عالی، باعث شده تا برنامه نویسان بتوانند گزارش های موردنظر خود را با کارایی و سرعت مناسب در سمت سرور بسازند به طوری که این گزارش های سمت سرور توسط هر برنامه کاربردی سمت کلاینت در هر پلتفرمی با همان امکانات اتصال به SQLServer قابل مشاهده است.

بهبودهای ایجاد شده در زبان
در 2005 SQLServer تغییرات بسیار مثبتی در زبان SQL T ایجاد شده است. این تغییرات در زمینه های مختلف مثل مدیریت خطاها، جستجوهای بازگشتی (Recursive Query) و حتی در بدنه موتور پایگاه داده ها انجام شده و کارایی کلی ذخیره و یا خواندن اطلاعات را به نحو مطلوبی افزایش داده است. به عنوان مثال دردستورات TSQL، دو اپراتور جدید دیده می شود، که PIVOT وUNPIVOT نام دارند. این دو اپراتور که در قسمت FROM یک پرس وجو مورد استفاده قرار می گیرند می توانند نتیجه یک جستجوی انجام شده توسط دستور SELECT را به جای برگرداندن در قالب ردیف ها یا رکوردهای پشت سرهم، به صورت ستون های مختلف یک یا چند رکورد برگردانند. در این روش یکی از ستون های (فیلدهای) یک جستجو به عنوان محور معرفی شده و بقیه ستون ها براساس آن به صورت افقی طبقه بندی می شوند. به یک مثال توجه کنید:
SELECT CUSTOMER ID, order No
FROM orders PIVOT CustomerID
Order No
Order No
Order No
Order No
Customer ID

4400
1120
25
1

350
2

1780
443
3
8989
2222
1980
555
4

نتیجه جستجوی فوق چیزی شبیه جدول بالا خواهد بود
همان طور که مشاهده می کنید با استفاده از اپراتور مذکور، نتیجه پرس وجوی انجام شده به این صورت که هر ردیف به یک شماره مشتری و چندین شماره سفارش مربوطه به آن مشتری در قالب ستون های مختلف است، در می آید. این همان چیزی است که سال ها درSQLServer وجود نداشت و ابزارهای مختلف گزارش سازی مثل CrystalReport آن را با نام Cross Tab به کاربران خود ارایه می دادند. در همین رابطه اپراتورUNPIVOT هم عمل عکس اپراتور مذکور را انجام می دهد.
اپراتور دیگری که می تواند نقش مهمی را در دستورات SQL بازی کند APPLY نام دارد که در قسمت FROM یک دستور SQL به کار می رود. با استفاده از این دستور می توان خروجی یک تابع (Function) را با یک یا چند جدول دیگر ترکیب (Join) کرد همان طور که می دانید در 2005 SQLServer توابع می توانند یک یا چند ردیف یک جدول اطلاعاتی را برگردانند که این خروجی می تواند با یک جدول دیگر با استفاده از اپراتور مذکور ترکیب شود.

مدیریت خطا
در نسخه های قدیمی SQLServer برای کشف و مدیریت خطا از سیستم Error Handling استفاده می شد. این شیوه کشف خطا که در زبانی مثل ویژوال بیسیک 6 هم مورد استفاده قرار می گرفت با استفاده از دستور GOTO می توانست کنترل و خط اجرای روال را از یک محل به محل دیگر و در واقع از محل بروز خطا به محل مدیریت و آشکار کردن (Raise) آن ببرد و بدین وسیله پیغام خطایی را به کار نشان دهد. نسخه جدید SQLServer با تاثیر از پلتفرم دات نت، از دستورات ویژه کشف و مدیریت خطا با عنوان Exception Handling استفاده می کند. این روش با استفاده از دستورات جدید TRY/CATCH شیوه بهتری از مدیریت خطا را به اجرا می گذارد. در این روش برخلاف روش قبل، تمام خطاهای اتفاق افتادنی مثل خطاهای مربوط به تبدیل داده ها به یکدیگر (DataConversion) به خوبی مدیریت شده و از بروز خطاهایی که منجر به اتمام ناقص عملیات یک روال یا تریگر می شود جلوگیری به عمل می آید.

نتیجه گیری :

Sql با زبان ساخت یافته گزارشگیری که یک پایگاه داده بسیار قدرتمند در زمینه های مختلف میباشد امکان مدیریت و امنیت اطلاعات را در سطح وسیعی دارا میباشد ، این زبان با امکانات و ویژگیهای امنیتی که در بالا به اختصار به آنها اشاره کردیم داده ها و اطلاعات را در وضعیتی مناسب نگهداری می کند ، امکان محدود کردن کاربران سیستم در وضعیت های گوناگون ، استفاده از ابزارهای کمکی برای دفاع از بانک اطلاعاتی در برابر حملات احتمالی می تواند امنیت و کارایی سیستم امنیتی سیستم شما را ارتقا بخشد .

منابع و ماخذ :
ماهنامه تخصصی رایانه و فناوری اطلاعات شماره 26ص241 گردآورنده : دکتر محمد صادق هدایتی – استاد دانشگاه صنعتی امیر کبیر 1386
ماهنامه ایران کلیک شماره 265ص29 گردآورنده : دکتر همایون میرزایی – استاد دانشگاه پلی تکنیک اصفهان 1385
مرکز اسناد و اطلاعات و مدارک علمی ایران
Www.Irandoc.ac.ir/persian/article

7


تعداد صفحات : 49 | فرمت فایل : word

بلافاصله بعد از پرداخت لینک دانلود فعال می شود