نمایش نتایج 1 تا 16 از 16

نام تاپیک: نگاهی به امکانات نسخه جدید SQL Server 2005

  1. #1
    کاربر دائمی
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    فعلا ایران - فعلا تهران
    پست
    2,628

    نگاهی به امکانات نسخه جدید SQL Server 2005

    عرضه شدن نسخه 2005 پایگاه داده‌ای مشهور مایکروسافت یعنی SQLServer، بازار نرم‌افزارهای بانک اطلاعاتی را به شدت تحت تأثیر خود قرار داد. امکانات گسترده‌ای که در این نسخه جدید تعبیه شده، طراحی و پیاده‌سازی بانک‌های اطلاعاتی را سرعت بخشیده و تلفیق و انطباق آن با انواع فناوری‌های نو مانند XML وADO.NET، باعث افزایش قدرت و کارایی آن شده است. در این مقاله به برخی از ویژگی‌های جدید این برنامه نگاهی خواهیم داشت.

    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) به خوبی مدیریت شده و از بروز خطاهایی که منجر به اتمام ناقص عملیات یک روال یا تریگر می‌شود جلوگیری به عمل می‌آید
    آخرین ویرایش به وسیله بابک زواری : دوشنبه 16 آبان 1384 در 16:04 عصر

  2. #2
    کاربر دائمی
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    فعلا ایران - فعلا تهران
    پست
    2,628
    اینم فایل وردش
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله بابک زواری : چهارشنبه 30 شهریور 1384 در 00:09 صبح

  3. #3
    ممنون جناب زواری
    مقاله جالبی بود.
    منتظر سایر مقاله‌های شما هستیم.
    موفق باشید

  4. #4
    کاربر دائمی
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    ایران - تهران
    پست
    127
    خیلی خوب بود دست شما درد نکنه

  5. #5
    کاربر دائمی آواتار aidinwashere
    تاریخ عضویت
    فروردین 1384
    محل زندگی
    پشته سرت
    پست
    632
    با تشکر از شما مدیر گرامی.

  6. #6
    کاربر دائمی
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    فعلا ایران - فعلا تهران
    پست
    2,628
    کسی راجع به برنامه نویسی در SQL2005 چیزی میدونه؟ کاری کرده ؟

  7. #7
    بنیان گذار Barnamenevis آواتار مهدی کرامتی
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    کرج، گلشهر
    سن
    46
    پست
    6,379
    در SQL Server 2005 می تونید با استفاده از Net. خیلی از کارها رو بهبود ببخشید. مثلا خیلی از کارهایی رو که قبلا انجامش با T-SQL غیر ممکن بود الان ممکن شده، و یا اینکه میتونید Function ها، Stored Procedure ها، Trigger ها رو با زبانهای دات نت بنویسید.

    حتی می تونید با استفاده از Net. انواع داده (Data Type) جدید تعریف کنید و اون رو بعنوان نوع فیلد جدول تون استفاده کنید.

    من اکثر اینکارها رو انجام دادم و کلی از انجامش لذت بردم.

  8. #8
    از جمله امکانات sql-server 2005 که خیلی حالش رو بردم و بجز مواردی که جناب زواری ذکر کرده بودن امکان نوشتن aggregate functin هاست (user defined aggregate functions) واقعا جالبه. یکی دیگه هم امکان ranking توی 2005 است. یه چیز دیگه ای هم در مورد ساختار های درختی است. به پست شماره 13 از این تاپیک توجه کنید:
    http://www.barnamenevis.org/sh...t=16934&page=2
    هر که بر مرکب باطل نشیند ، در سراى پیشمانى فرودش مى‏آورند

  9. #9
    کاربر دائمی آواتار habedijoo
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    پست
    538
    سلام

    بابت تمامی مطالب از همگی متشکرم

    یه سوال داشتم . ارتباط از طریق دات نت ( مثلا VB.Net ) با SQl 2005 دقیقا شیبه SQl 2000 هست .
    هیچ تنظیمات و کار خاصی لازم نیست . ؟

    اگر یه کم توضیح بدین ممنون می شم .
    آخرین ویرایش به وسیله habedijoo : یک شنبه 08 آبان 1384 در 10:20 صبح

  10. #10
    کاربر دائمی
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    فعلا ایران - فعلا تهران
    پست
    2,628
    نسخه SQL2005یکسری مشکلاتی رو داره که من خودم هنوز ازش به طور رسمی استفاده نمیکنم
    بله به همان روش میتونید به بانک متصل بشید

  11. #11
    کاربر دائمی
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    فعلا ایران - فعلا تهران
    پست
    2,628
    دوستانی که مایلند در مورد SQL 2005 اطلاعات بیشتری کسب کنند میتونن در سمینار آشنایی با امکانات جدید شرکت کنند

  12. #12
    کاربر دائمی آواتار habedijoo
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    تهران
    پست
    538
    آقا بابک سلام

    سمینار کجاست ؟ و چطوری میشه شرکت کرد ؟

  13. #13
    کاربر دائمی
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    فعلا ایران - فعلا تهران
    پست
    2,628
    به سایت www.sqlsolutions.ir مراجعه کنید

  14. #14
    کاربر دائمی آواتار Yalda2005
    تاریخ عضویت
    مهر 1384
    محل زندگی
    من شهروند همه ی جهانم
    پست
    205
    این که ماله تهرانیاس ...

  15. #15
    با استفاده از C#‎.net همه کارهای t-sql را میشه انجام داد؟؟؟؟/

  16. #16
    نقل قول نوشته شده توسط نغمه مشاهده تاپیک
    با استفاده از C#‎.net همه کارهای t-sql را میشه انجام داد؟؟؟؟/
    سلام
    این یک تصور اشتباهی است که خیلی ها با شندین همان جمله "یکی شدن SQL Server و .Net مرتکب میشوند. در واقع این SQl-CLR فط اجازه میدهد که شما چیز هایی را که برایتان میسر نبوده است را تحت این محیط تولید نمرده و در بانکتان از آنه استفاده نمایید.. به عنوان مثال ایجاد تاریخ شمسی در SQL که این یکی از هزاران کاری است که میشه انجامش داد.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •