۱۳۸۸/۰۲/۲۳

انتقال فايل‌هاي ديتابيس اس كيوال سرور 2008


روز قبل نياز بود تا فايل‌هاي mdf و ldf ديتابيس‌ها جابجا شوند (يك هارد بزرگتر و از اين مسايل).
براي جابجا كردن اين فايل‌ها هم روش معمول detach و سپس attach است. ابتدا روي ديتابيس كليك راست كرده و detach . حالا فايل‌ها را جابجا مي‌كنيد و سپس attach . يا مي‌شود بك آپ كامل گرفت و بعد ري استور كرد.
عموما هم نمي‌توان ديتابيس در حال استفاده را detach‌ كرد. بايد ديتابيس ابتدا single user شود و بعد مي‌توان اين‌كار را انجام داد.
تا اينجاي كار متداول است. همه چيز به خوبي انجام شد. سپس در لحظه attach ، ديتابيس‌ها به صورت read only اتچ شدند با آيكوني سياه رنگ در management studio . (و رنگ من هم بلافاصله به همين رنگ متمايل شد!)
بعد از مدتي جستجو مشخص شد كه در اس كيوال سرور 2008 براي كاهش سطح حمله به سرور، از يك سري يوزر با دسترسي كم براي نصب اس كيوال سرور استفاده مي‌شود (بسيار هم خوب) و اس كيوال سرور 2008 ، يك سري يوزر مخصوص را هم در حين نصب ايجاد مي‌كند كه به صورت خودكار بر روي پوشه ديتاي شما دسترسي full control دارد براي اينكه بتواند كارش را انجام دهد.
حال اگر شما در جاي ديگري پوشه‌اي درست كرديد و اين ديتابيس‌ها را منتقل نموديد، مجددا پيش از هر كاري بايد اين دسترسي را برقرار كنيد و گرنه اس كيوال سرور مجوز write نخواهد داشت؛ به همين جهت ديتابيس به صورت read only در management studio با رنگ مشكي ظاهر مي‌شود.
نام اين كاربر مخصوص به صورت زير است:

SQLServerMSSQLUser$ComputerName$MSSQLSERVER




پس از برقراري دسترسي هم مشكل برطرف نمي‌شود. بايد دستور زير را نيز اجرا نمود:
ALTER DATABASE myDB SET READ_WRITE
اجراي اين دستور نيز، نياز به حالت single user دارد.

پ.ن.
مي‌توان دسترسي يوزر سرويس اس كيوال سرور 2008 را نيز مانند نگارش‌هاي قبلي به حالت local system تغيير داد (يا هر اكانت ديگري با دسترسي بالا) تا اين مشكلات نباشد؛ ولي بديهي است سطح حمله به سرور نيز به همين اندازه افزايش مي‌يابد.