PDA

View Full Version : سوال: Backup گرفتن از ديتابيس



bill_geits
یک شنبه 27 تیر 1389, 13:51 عصر
سلام
من يه برنامه با sql و linq نوشتم و ميخوام براش قابليت backup رو بذارم ولي وقتي از دستور sql آن استفاده ميكنم خطا ميده كع ديتابيس در حال استفاده هست و باي هيچ اتصالي به بانك نداشته باشي. آيا راه ديگه اي هست كه بشه اين كار رو انجام داد ؟
كد بكاپ


"use master backup database phonebook to disk='" + save_filename + "' with init"


كد رستور


"use master restore database phonebook from disk='" + open_filename + "' with replace"


در ضمن من قبلش هم از sqldemo استفاده كرده بودم كه جواب نگرفتم

babak_bsn
یک شنبه 27 تیر 1389, 15:42 عصر
دو روش رو امتحان كن قاعدتاً يكيش بايد جواب بده

your db-->properties-->Options---->restrict access----->change multi user into single user

و روش دوم هم اينكه قبل از پشتيبان گيري توي كدت اين كدا رو اضافه كني


DataTable dtserver = SmoApplication.EnumAvailableSqlServers(true);
//Connecting to SQLServer
ServerConnection srvcon = new ServerConnection(dtserver.Rows[0][0].ToString());
srvcon.LoginSecure = true;
Server srvsql = new Server(srvcon);
srvsql.KillAllProcesses("YourDB");
در ضمن فضاي نام

using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
رو هم بايستي به پروژت اضافه كني

bill_geits
یک شنبه 27 تیر 1389, 17:35 عصر
بابك جان از اينكه جواب دادي ازت ممنونم ولي اگه ميشه بيشتر توضيح بده . من اين كر رو گذاشتم تو پروژم ولي هيچكدام از namespace هاي اون رو نميشناسه و dllهاي اون را هم پيدا نكردم كه به پروژه اضافه كنم !! . ولي تغييري كه گفته بودي رو در properties ديتابيس دادم ولي فقط يكبار كه برنامم اجرا ميشه درست كار ميده و دوباره به حالت اول برميگرده(اونم به اين خاطر كه همه ي اتصالات رو موقع اجرا ميبنده) !! حتا اون تغييري رو هم كه در properties ديتابيس ميدم به حالت اول برميگرده (دوباره multiple ميشه ) بايد چيكارش كنم ؟ من فقط به دستوري نياز دارم كه تمام اتصالات رو قبل از اجراي دستورم ببنده (مثل KillAllProcesses كه خودت گفتي).

babak_bsn
چهارشنبه 06 مرداد 1389, 13:21 عصر
خب همه اين اتفاقاتي كه واست افتاده طبيعي هست !
شما بايستي ساير فرآيند هايي رو كه به پايگاه داده شما دسترسي دارن قطع كني از طريق دستورKill All Process
اگر موقع Add reference كردن نميتوني اين .dll ها رو پيدا كني بصورت دستي اضافه شون كن.اين dll ها در مسير زير قرار دارند:
C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.Conne ctionInfo.dll
C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies\Microsoft.SqlServer.Smo.d ll