X
تبلیغات
رایتل
زمان ثبت : پنج‌شنبه 30 آبان‌ماه سال 1387 در ساعت 08:45 ب.ظ
نویسنده : آکو
عنوان : پرسش ها، پاسخ ها و نکاتی در مورد SQL Server
پرسش :

وقتی من دستور select @@ version را از (SP1) SQL Server service pack اجرا می کنم شماره سریالی معادل 699 را ارائه می دهد، درحالیکه Query Analyzer help در sqlserver 7.0 عددی معادل 694 را بعنوان شماره سریال ارائه می دهد.

شماره سریال صحیح SQL server 7.0 (spl) چه می باشد؟

شماره سریال صحیح برای SQL server spl ، 699 می باشد بنابراین اجرای select @@ version از Query Analyzer یا (isql) interactive sql شماره سریال معادل 699 را برای SQL server 7.0 ارائه می دهد. در حالیکه شماره سریال ابزار سرویس گیرنده حتی بعد از بکارگیری (spl) 694 می‌باشد. این سیستم عدددهی گیج کننده است و ما امیدواریم که مایکروسافت جهت رفع هرگونه شبهه ای این اعداد را در نسخه های بعدی خود یکی کند.

پرسش :

با توجه به مطالب کتابهای راهنمای (Bol) sql server 7.0 می توانید از مطابقت پایگاه داده بنام consistency و از دستور (DBREINEX) برای ایجاد دوباره یک شاخص برروی یک جدول استفاده کنید. لذا وقتی که Dbcc show Config پراکندگی بالایی را گزارش داد سعی کردیم با استفاده از DBCC DBREINEX ، پراکندگی جداول را کاهش دهیم. در حالیکه اجرای این دستور در بهبود پراکندگی ها مؤثر واقع نشد. نظر شما در این مورد چیست ؟
پاسخ :

پاسخ به این سؤال بدون داشتن اطلاعات بیشتر مشکل می باشد. اما مشکل شما ممکن است مانند مشکلات شایع کاربران جدید SQL server باشد، کاربران باید توجه داشته باشند که داده ها و شاخص ها همیشه ساختارهای جداگانه ای هستند بجز در شاخص های کلاستری که در مورد آنها سطح گره پایانی شاخص (سطح پائینی) و صفحات داده یکسان می باشند. اجرای DBCC DBREINDEX برروی یک شاخص، بهبودی در پراکندگی جداولی که dbcc show contig گزارش می دهد نخواهد داشت، مگر اینکه شما شاخص های cluster ای را دوباره شاخص بندی کنید. (جداول فقط می توانند یک شاخص کلاستری داشته باشند). اگر جدول شما شاخص کلاستری ندارد می توانید جهت رفع پراکندگی یک شاخص کلاستری پاک یا ایجاد نمائید.

پرسش :

از کجا می توانم اطلاعاتی در مورد شاخص های Weird که SQL بصورت اتوماتیک تولید می کند پیدا کنم ؟ من از دستورات Sp-help table و Sp-help index برای مشاهده شاخص ها استفاده کردم اما نتوانستم آنها را مکتوب و نسخه بندی کنم همچنین قادر به پاک کردن شاخص ها باشم اما اطلاعات کافی برای اینکه بتوانم آنها را پاک کنم ندارم.

پاسخ :

سعی برای پاکسازی اتوماتیک شاخص های ایجادشده به منظور تحقیق و دستیابی به هدف آموختن کاملاً مقبول است. لکن ما قویاً کاربران را از توجه بیش از اندازه به تصمیمات اتخاذشده توسط SQL server optimizer باز می داریم. (به عنوان مثال در اینجا منظور خلق خود کار شاخص می باشد.)

بنابر اظهارات فوق اگر عناصری با پیشوند WA-sys شروع شوند شاخص نمی باشند بلکه آماری هستند که Optimizer (بهینه ساز) به منظور پیگیری توزیع داده ها تولید می کند.

این واحدها یا عناصر در حکم حافظه نهانی Optimizer می باشند. در کتابهای SQL server Bol ، Inside Microsoft SQL و Kalen Delaneys از نشر مایکروسافت 1999 ، به تفضیل به آن پرداخته شده است. برای کسب اطلاعات بیشتر در مورد آمار و DROP STATISTICS ، هر دومنبع فوق‌الذکر را مطالعه نمایید. ممکن است به دنبال شاخصه هایی که توسط SQL server در زمانی که PRIMARY KEY یا محدودیت UNIQUE را انجام می دهید، ایجاد می شود، باشید.

شمامی‌توانید این واحدهایاعناصر رابه عنوان شاخص پاک کنید بلکه باید محدودیتها را برطرف سازید.

پرسش :

من سعی دارم بانک اطلاعاتی برروی سرویس sql server (spl) pack ایجاد کنم. از ایستگاه کاری خودم می توانم یک دایرکتوری داده به صورت (اشتراکی) share ببینم. این اشتراک بصورت \\sql7\sql data می باشد و به d:\mssql در دایرکتوری پایگاه داده اشاره دارد. تحت این دایرکتوری یک دایرکتوری به اسم فایلهای پایگاه داده را از طریق Enterprise manager ایجاد کنم، Enterprise manager دایرکتوری db1\dir را نشان نمی دهد و وقتی که من بصورت دستی مسیر را می دهم پیغام خطایی مبنی بر اینکه دایرکتوری وجود ندارد دریافت می کنم.

در حالی که وقتی مستقیماً به server متصل می شوم می توانم مسیر کامل d :\MSSQL Data bases DB!DIR را مشاهده کنم. من از share برای دسترسی به server برای تنظیم دایرکتوری و انجام کارهای دیگر استفاده کردم و حتی وقتی پشت server هستم می توانم دایرکتوری d:\mssql در پایگاه داده \db dir را ببینم. وقتی در تلاش برای ایجاد پایگاه داده و انتخاب جایی که می خواهم SQL server فایلها را قرار دهد می باشم، فقط دایرکتوری d:\\mssql را در پایگاه داده می بینم. وقتی که سعی می کنم دایرکتوری را باز کنم با کلیک راست برروی علامت + کنار دایرکتوری چیزی ظاهر نمی شود و علامت + ناپدید می شود. نظر شما چیست ؟



پاسخ :

اولین چیزی که بنظر ما می رسد اینست که شما setup را بگونه ای تنظیم کرده اید که از accountهای NT که برروی سرویس هایی mssql server در حال اجرا هستند با مجوزهایی از طریق sub directory که شما سعی می کنید data base تان را برروی آن ایجاد کنید جلوگیری بعمل آورد.

برای اینکه مطمئن شوید مشکل شما از Enterprise manager GUI سرچشمه نمی گیرد به جای ایجاد data base از طریق GUI ، از دستور T-sql برای ایجاد data base تان عمل کنید.اگر روش T-sql نتوانست کار کند و شما در محدوده مجوزها دچار مشکل شدید، ممکن است به مشکل Enterprise manager گرفتار شده اید. عدم آگاهی از نحوه عملکرد sql server account با مجوزهایش برروی یک ماشین local و شبکه از مهمترین عوامل مشکلات sql server می باشند. بررسی مجوزهای sql server برای service account باید حتماً در لیست موارد رفع اشکال شما وجود داشته باشد.

پرسش :

من در جستجوی یک نسخه ابتدایی برای تنظیم عملکرد اجرایی SQL server هستم تا check list ای که نتایج عملکرد و بالایی در پی دارد تهیه کنم. آیا MICROSOFT چنین لیستی تهیه می کند ؟ آیا شما می توانید کتاب مفیدی که شامل دستورالعملی برای تنظیم عملکرد داشته باشد پیشنهاد کنید ؟

پاسخ :

ما نیز آرزو می کنیم که ای کاش چنین لیستی موجود بود اما در صورت وجود چنین لیستی نه تنها این لیست تقریباً طولانی می شد بلکه عموماً نمی دانستیم چگونه از آن استفاده کنیم. ما فکر می کنیم که روش تکراری بیشتر مؤثر باشد : سیستم خود را تحت آزمون کارایی قرار دهید، (مثلاً عملیات ابتدایی طولی برای سیستم اتان ایجاد کنید) گلوگاهی پیداکرده و آنرا مرتفع سازید، و سپس دوباره از نظر سخت افزاری و نرم افزاری تستی انجام دهید. همچنین بخاطر داشته باشید که طراحی data base تان و کدنویسی برنامه های کاربردی را نیز چک کنید. بنابر تجربه ما، این عناصر حتی بیش از مجموعه سخت افزاری باعث بروز مشکل می شوند.

در مقاله Brians «مقاله : پایگاه داده خود را از طریق sql تنظیم نمائید در سال 1999» توضیح می دهد که چگونه می توانید از SQL Trace بصورت مؤثری در یافتن گلوگاههای سطح برنامه های کاربردی، استفاده نمائید.

در sql server 7.0 ، مایکروسافت بجای sql trace از sql profiler استفاده کرد. گرچه اغلب هسته‌های اطلاعاتی مثل هم می باشد. برای بدست آوردن اطلاعات بیشتر در مورد sql profiler ها به مقاله Brians، july99 قسمت «sql server provider جهت تنظیم برنامه های کاربردی مراجعه کنید.»

هر دوی این مقالات مدارکی ارائه می دهند دال براین حقیقت که شما به جای انجام آن تغییرات سخت افزاری از طریق تنظیم برنامه های کاربردی و میان افزاری به نتایج به مراتب بهتری دست خواهید یافت.

ما تمرینی را مطرح کرده ایم که به شما نشان بدهیم چقدر می توانید از طریق profile کردن برنامه هایتان اطلاعات کسب کنید. می توانید مراحل زیر را در منزل انجام دهید (برای انجام این کار احتیاج به Access 2000 خواهید داشت).

1) یک data base جدید در access ایجاد کنید و جدول authors را از data base (sql server) به data base جدید access ، Link کنید.

2) از Access GUI برای نوشتن update query که ستون شماره تلفن ها را برای خودش update (روزآمد) می کند. (اما هنوز query را اجرا نمی کند) استفاده کنید. نیازی به تغییر داده هایی که باعث شدندبه سادگی بفهمید برنامه های سرویس گیرنده ها چقدر می توانند غیر کارا باشند نیست.

3) Sql profiler را بازکنید و اطمینان حاصل کنید که تنظیمات را طوری ایجاد کرده اید که : RPC completed و stmtcomplete : sql در سطح T-sql هستند.

4) Update query در access اجرا نمائید.

Brian از پیکربندی پیش فرض های سرویس sql server 7.0 (sql) استفاده کرده و این تمرین را برروی windows NT sp(5) کامپیوتر کیفی (lapTop) اجرا کرد. اجرای query ، access احتیاج به 55 دستور دارد، (توجه کنید که جدول pubs authrs فقط 23 ردیف دارد) در ابتدا access یکسری دستورات خانه داری ارائه می کند. سپس دستور select برای بازیابی با primary keys retriede برای تمامی 23 ردیف در نظر می گیرد. سپس access یک مکان نما server-side برای تعیین موقت select و یک مکان نمای server - side برای update کردن تهیه می کند. در آخر access برای روزآمد سازی هرردیف، 2 فرمان اجرایی sp-execute را ارائه می دهد. اولین دستور امورانتخاب موقعیت راسازماندهی می کندودومین دستورامورupdate یاایجادتغییرات را انجام می دهد.

بنابراین access احتیاج به 55 دستور برای update کردن 23 ردیف دارد. هرردیف احتیاج به 2 بار فراخوانی T-sql دارد این چنین شرایطی بطور کلی بسیار معمول است.

اخیراً Brain سبب گردیده تا هر سرویس گیرنده از قابلیت تنظیم update 6 میلیون ردیف برآید. حال به فرض این مسئله که access به مانند تمرین فوق الذکر عمل می کند، روزآمدسازی 6 میلیون ردیف (12 میلیون فرمان) با توجه به میزان 100 فرمان درهر ثانیه، در هر ارتباط تقریباً 333 ساعت طول می‌کشد. شما نخواهید توانست اینگونه مشکلات را از طریق پیکربندی مجدد سیستم یا ارتقاء نقطه امید شما خواهد بود و sql profiler بهترین امکانات را برای انجام چنین کاری مهیا می سازد.