آی تی نرد

اشتراک اطلاعات و تجربیات در زمینه ی توسعه ی دات نت و البته شیرپوینت

انتقال یک یا چند مجموعه سایت به دیتابیس دیگر و یا وب اپلیکیشن دیگر

سلام به دوستان

یه روزی به دلایلی نیاز داشتم که که چندتا مجموعه سایت رو که داخل یک دیتابیس بودند رو به یک وب اپلیکیشن دیگه منتقل کنم چندتا سرچ که کردم مطالبی که پیدا میشد مربوط به انتقال یک یا چند مجموعه سایت به یک دیتابیس دیگه بود. که دستوراتش به صورت زیر بود : (دستور زیر برای انتقال یک مجموعه سایت به دیتابیس میباشد)

Move-SPSite <http://ServerName/Sites/SiteName> -DestinationDatabase <DestinationContentDb>

 

که پارامتر اول نام مجموعه سایت و پارامتر دوم نام دیتابیسی که قصد انتقال به اون رو دارید هست.

برای انتقال چند مجموعه سایت به یک دیتابیس میتونید از دستور زیر هم استفاده کنید:

Get-SPSite -ContentDatabase <SourceContentDb> | Move-SPSite -DestinationDatabase <DestinationContentDb>

 

بخش اول دستور تمام مجموعه سایت هایی که داخل دیبتابیس <SourceContentDb> باشه رو برمیگردونه و به بخش دوم دستور پاس میده از اونجایی که پارامتر پیشفرض دستور Move-SPSite نام مجموعه سایت یا آبجکت SPSite هست به ازای هر مجموعه سایت اونها رو به دیتابیس <DestinationContentDb> منتقل میکنه.

با تمام توضیحات که دادم هنوز مشکل من حل نشده بود چون من میخواستم چند تا مجموعه سایت رو به یک وب اپلیکیشن (WebApplication) دیگه منتقل کنم.

اگه دستورات بالا رو برای این منظور استفاده کنید به خطای زیر بر میخورید :

 The site collection being moved and the destination content database must be within the same Web application.

 

این پیغام میگه که مجموعه سایت و دیتابیس مقصد باید در یک وب اپلیکیشن باشند!

بیشتر که تحقیق کردم مطلب مناسبی در این مورد پیدا نکردم. یاد صحبت یکی از دوستان (حمید جلالی) افتادم که میگفت بعضی مواقع علت اینکه پاسخ یه مسئله ای توی اینترنت پیداه نمیشه بیش از حد ساده بودن اون مsئله میتونه باشه!.

راه حلی که به ذهن من رسید این بود : 

اما راه حلی که من به ذهنم رسید انتقال کل دیتبابیس حاوی مجموعه سایت ها به وب اپلیکیشن دیگه بود.

برای این کار کافیه به روش زیر دیتابیس رو از وب اپلیکیشن مقصد حذف یا به عبارت بهتر منفک کنیم :

به قسمت مدیریت دیتابیس ها میریم :

 مدیریت دیتابیس ها در شیرپوینت

در صفحه باز شده بعداز انتخاب وب اپلیکیشن مورد نظر روی دیتابیسی که قصد حذف اون را داریم کلیک میکنیم. در صفجه ای که باز میشه مطابق تصویر زیر گزینه  Romove content database رو تیک میزنیم تا بعد از ذخیره صفحه دیتابیس از وب اپلیکیشن حذف یشه... نگران نباشید دیتابیس بصورت فیزیکی حذف نمیشه و فقط از لیست دیتابیس های فارم خارج میشه.

 حذف دیتابیس در شیرپوینت

 

بعد از حذف دیتابیس دوباره در صفحه مدیرت دیتابیس ها مطابق تصویر زیر گزینه Add a content database رو کلیک میکنیم.

 ایجاد دیتابیس در شیرپوینت

 

نکته ای که در آخرین مرحله باید رعایت کنیم در صفحه باز شده نام دیتابیس جدید رو دقیقا نام دیتابیسی که در مراحل قبل حذف کردیم انتخاب میکنیم.

شیرپوینت در زمان ایجاد دیتابیس جدید اگر نام دیتابیسی که وارد کردید قبلا وجود داشته باشه سعی میکنه که دیتابیس موجود رو به وب اپلیکیشن اضافه کنه.

 در محیطی که من این کارو انجام دادم از روش host-named site collections آدرس دهی ها انجام شده بود که لازم بود در تنظمیات IIS قسمت بایندینگ (Binding) وب اپلیکیشن ها آدرس سایت رو از وب اپلیکیشن قدیم حذف و به وب اپلیکیشن جدید اضافه کنم.

 

 

نظرات (2) -

  • حسین

    5/27/1395 05:26:10 ب.ظ | پاسخ به این نظر

    با سلام و تشکر بابت پست ها تون مهندس جان
    من یک سایت کالکشن دارم که داخل اون چیزی حدود 25 ساب سایت داره.حالا میخوام ببینم چطوری هر ساب سایت ها رو به یک دیتابیس دیگه منتقل کنم.
    با تشکر

    • حمید

      7/7/1395 11:00:54 ب.ظ | پاسخ به این نظر

      سلام ممنون.
      واسه زیرسایت ها میتونید از قابلیت ایمپورت و اکسپورت شیرپوینت استفاده کنید.
      و ضمن اینکه یکی از تفاوت های مهم این روش با بکاپ/ری استور این هست که میتونید حتی توی یک مجموعه سایت همون زیرسایت رو چند بار ایمپورت کنید.
      واسه اینکار میتونید از دستورات پاورشل شیرپوینت استفاده کنید:
      Import-SPWeb
      Export-SPWeb
      در زیر هم مستندات مایکروسافت در این رابطه امده است:
      technet.microsoft.com/en-us/library/ff607895.aspx
      technet.microsoft.com/en-us/library/ff607613.aspx

Loading