# پایگاه‌های داده > SQL Server > مدیریت دیتابیس (Database Administration) > Backup & Restore >  Append کردن یه بانک رو بانک دیگه

## tahayazdani

سلام
دو تا بانک اطلاعاتی داریم که کاملا از نظر جدول و محتوا عینا شبیه هم  هستند و یکی از آن ها در داخل شرکت اصلی و دیگری در یکی از شعب آن شرکت کار  می کند. پس طبیعتا تنها تفاوت آن در رکوردهای جداول است.
مدیر شرکت که در شرکت اصلی است می خواهد بانک اطلاعاتی شعبه نماینده را  Restore کند اما با این تفاوت که رکوردهای شعبه نماینده روی رکوردهای شعبه  اصلی ریخته نشود بلکه به رکوردهای شعبه اصلی اضافه شود.
من به فکرم این رسید که یه بانک به اسم Temp بگیرم اول تمام رکوردهای بانک شعبه در داخل این Temp ریخته شود سپس به بانک اصلی وارد شود اما در ارتباط بانک های با بنامه به مشکل خوردم. آیا می شود همزمان به دو بانک وصل شد. من این پیغام ارور را دارم.
An attempt to attach an auto-named database for file \BackUp.MDF failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.
در SQL آیا میشود چنین کاری کرد؟(درضمن من از SQL Express داخل دات نت 2008 استفاده کردم)
مرسی

----------


## حمیدرضاصادقیان

سلام.
شما چندتاروش در پیش رو دارید.
1- Import/Export
 replication -2
3- اضافه کردن رکوردها با استفاده از Insert Into

در روش اول شما خیلی راحت دو بانک رو انتخاب میکنید و با استفاده از Query Builder مشخص میکنید که رکوردهایی که در دیتابیس دوم و جدول مورد نظر وجود ندارد رو اضافه کنید.و میشه بعدا این Package رو ذخیره کرد و در دفعات بعد خیلی راحت در یک Job اونو اجرا کنید.

در روش دوم بهتره به نسخه Developer یا Enterprise تغییر بدید. در این روش باید بین دو دیتابیس شبکه برقرار باشه. مثلا اگر یکی شهرستان یکی تهران هست یک شبکه باید بین این دو باشه.
بعد یک Job تعریف خواهد شد که به واسطه اون خودش اطلاعات جدید رو به دیتابیس مورد نظر اضافه میکنه. فقط باید دیتابیس منتشر کننده اطلاعات و گیرنده اطلاعات رو دقیق مشخص کنید و اینکه ایا میخواهید این بروز رسانی به صورت دو طرفه باشه یا یک طرفه.

در روش سوم خودتون میاید برای تک تک جداول کد می نویسید و یک script ایجاد میکنید و زمانی که دیتابیس رو روی سیستم دوم Restore کردید کافیه یک بار اون Script رو اجرا کنید.

روش اول راحته ولی بعضی مواقع ایرادهایی در کار پیش میاد که ممکنه کارتو سخت کنه.
روش دوم پیاده سازیش مقداری زمان بر هست ولی دیگه خودت نیازی به کد نویسی نداری.
روش سوم خودت کد می نویسی و در یک زمانبندی خیلی راحت میتونی اونو اجرا کنی.نیازی هم به تغییر نسخه های SQL Server نیست.

 از لحاظ سادگی اول روش 3- بعد روش اول بعد روش دوم رو پیشنهاد میکنم.

----------


## tahayazdani

مرسی
بله من خودمم تو همین فکر بودم اما متاسفانه یه مشکل جدی دارم
این که ما از هر شهرستان یه فایل با پسوند bak. در اختیار داریم که اول باید به آن متصل شد تا بعدش بتونم رکوردهایی که دارمو بگیرم ازش. اما متاسفاه من نمی تونم این فایل bak. رو بهش وصل بشم و open کنم. چون که ldf و mdf همراش نیست که بتونم connectionstring رو بگیرم.
من تنها مشکلم فقط ارتباط با این فایل های هر شهرستانه که از بانک اطلاعاتیشون backup می گیرن و با پسوند bak. ذخیره می کنن
مرسی

----------


## حمیدرضاصادقیان

خوب چه نیازیه شما به اون فایل وصل بشید.
شما ابتدا فایل رو روی سیستم خودتون Restore کنید و به دیتابیس مورد نظر وصل بشید.آیا برای انجام این کار محدودیتی دارید؟

----------


## tahayazdani

بله دقیقا محدودیت دارم.
چون وقتی من بانک هر شعبه رو restore کنم باید روی یه بانکی بالاخره restore شه دیگه اگه روی بانک اصلیم restore کنم که افتضاح می شه چون همه اطلاعات شعبه اصلی می پره. اگه هم یه بانک دیگه به نام temp بگیرم با همین جداول اول روی اون restore کنم بعد از اون بانک استفاده کنم sql گیر می ده که آقا چون backup شما از این بانک اطلاعاتی نیست شما نمی تونی این backup رو روی این بانک temp ،
restore کنی. در حالی که همه جداول عینا شبیه هم است.(فکر کنم هر بانک برای خودش یه کلید داره ، مثل سوییچ ماشین های جدید که مثلا یه سوییچ 206 به سوییچ 206 دیگه نمی خوره)
فکر کنم کل مشکلمو کامل گفتم. تورو خدا راهنماییم کنید. یه هفته است که دارم روش کار می کنم اما........

----------


## saeidfar

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

temp.jpg


بعد راه حل اقای صادقیان بسیار بجاست

----------

