۱۳۹۰/۰۷/۱۹

اگر نصب سرويس پك اس كيوال سرور Fail شد ...


همانطور كه مطلع هستيد سرويس پك سه SQL Server چند روزي است كه منتشر شده. اين به روز رساني بر روي يك سرور بدون مشكل نصب شد؛ در سرور ديگر به علت داشتن يك سري برنامه امنيتي مزاحم (كه مثلا دسترسي به رجيستري را مونيتور و سد مي‌كنند) با شكست مواجه و در آخر پيغام Fail نمايش داده شد. مجددا آنرا اجرا كردم، سريع تمام مراحل را تمام كرد باز هم Fail را نمايش داد.
خوب؛ گفتم احتمالا مشكلي نيست. سعي كردم به سرور وصل شوم ... پيغام «اين سرور دسترسي از راه دور را نمي‌پذيرد» و از اين حرف‌هاي متداول ظاهر شد. به لاگ موجود در Event log ويندوز كه مراجعه كردم پيغام خطاي زير نمايان بود:

Script level upgrade for database 'master' failed because upgrade step 'sqlagent100_msdb_upgrade.sql' encountered error 5597, state 1, severity 16. This is a serious error condition which might interfere with regular operation and the database will be taken offline. If the error happened during upgrade of the 'master' database, it will prevent the entire SQL Server instance from starting. Examine the previous errorlog entries for errors, take the appropriate corrective actions and re-start the database so that the script upgrade steps run to completion.

اوه! اوه! اوه! در اين لحظه‌ي عرفاني، ديتابيس master نابود شده! نمي‌شود وصل شد. سروري كه داشت تا مدتي قبل بدون هيچ مشكلي كار مي‌كرد، الان ديگر حتي نمي‌شود به آن وصل شد. به كنسول سرويس‌هاي ويندوز مراجعه كردم (services.msc)، سعي كردم سرويس اس كيوال را كه از كار افتاده دستي اجرا كنم، پيغام زير مجددا در event log ظاهر شد:

FILESTREAM feature could not be initialized. The Windows Administrator must enable FILESTREAM on the instance using Configuration Manager before enabling through sp_configure.

قابليت FILESTREAM را نمي‌تواند آغاز كند. پس از مدتي جستجو مشخص شد كه اين مورد را مي‌شود در رجيستري ويندوز غيرفعال كرد؛ به صورت زير:

1) Open up Registry Editor
2) Go To HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.MSSQLServer\MSSQLSERVER\FileStream
3) Edit the value "EnableLevel" and set it to 0
4) Restart SQL Server.

پس از انجام اينكار، سرويس اس كيوال استارت شد (از طريق كنسول سرويس‌هاي ويندوز). در ادامه، امكان اتصال به آن نبود (حتي با اكانت sa):

Login failed for user 'sa'. Reason: Server is in script upgrade mode. Only administrator can connect at this time. (Microsoft SQL Server, Error: 18401)


باز هم پس از مدتي جستجو معلوم گرديد كه «كمي بايد صبر كرد». آن پيغام اول كار مبتني بر تخريب ديتابيس master هم بي‌مورد است. پس از fail شدن نصب سرويس پك، هنوز برنامه نصاب آن در پشت صحنه مشغول به كار است. اين مورد به وضوح در task manager ويندوز مشخص است. سرور به مدت 15 دقيقه به حال خود رها شد. پس از آن بدون مشكل اتصال برقرار گرديد و همه چيز مجددا شروع به كار كرد.

بنابراين اگر در حين نصب سرويس پك SQL Server مشكلي پيش آمد، نگران نباشيد. بايد به نصاب آن زمان داد (برنامه mscorsw.exe در پشت صحنه مشغول به كار است). برنامه نصاب آن هم هيچ نوع خطاي مفهومي را گزارش نمي‌دهد. تمام مراحل، بجاي نمايش در برنامه تمام صفحه نصاب آن، در event log ويندوز ثبت مي‌شود. اين برنامه تمام صفحه فقط كارش نمايش يك progress bar است!


اگر ... هيچكدام از اين موارد جواب نداد، امكان بازسازي ديتابيس master نيز وجود دارد: [^ , ^]
ولي دست نگه داريد و سريع اقدام نكنيد. ابتدا به task manager مراجعه كنيد. آيا برنامه mscorsw.exe در حال اجرا است؟ اگر بله، يعني هنوز كار نصب تمام نشده. حداقل يك ربع بايد صبر كنيد.