پرسش :
وقتي من دستور 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 بهترين امكانات را براي انجام چنين كاري مهيا مي سازد.
|