View Full Version : DATA BASE IS IN USE !!!!!!!
alinux_redhat
یک شنبه 20 فروردین 1385, 23:14 عصر
من در محیط سی شارپ به یه مشکلی برخوردم که قادر به حلش نیستم تقریبا
البته از کمکهای دوست عزیزم آقای کاویانی خیلی استفاده کردم اما درست نشد
کانکشن دیتا بیسم رو کلوز میکنم و کلیه پروسز ها رو کیل میکنم
اما موقع ری استور کردن میگه :
Database is in use
علت چیه؟ :عصبانی++:
AminSobati
یک شنبه 20 فروردین 1385, 23:32 عصر
EXEC SP_WHO رو اجرا کنین و ببینین کدوم SPID داره از دیتابیس استفاده میکنه. اگر به نظرتون مزاحمه، اون رو KILL کنین
alinux_redhat
دوشنبه 21 فروردین 1385, 01:16 صبح
یه پروسس دارم با آی دی 51 که نمیدونم آیا رو هر سیستمی برم با همین آیدی میاد یا نه؟
از طرفی با دستور کیل من باید همه کیل شن دیگه
در ضمن دستور کیل تکی با آیدی رو بلد نیستم
ali_kolahdoozan
دوشنبه 21 فروردین 1385, 05:22 صبح
از rool back هم میشه استفاده کرد یعنی دیتابیس رو roll back کنی کلا
Kamyar.Kimiyabeigi
دوشنبه 21 فروردین 1385, 07:46 صبح
یه پروسس دارم با آی دی 51 که نمیدونم آیا رو هر سیستمی برم با همین آیدی میاد یا نه؟
از طرفی با دستور کیل من باید همه کیل شن دیگه
در ضمن دستور کیل تکی با آیدی رو بلد نیستم
برای از بین بردن یک SPID از همون دستور Kill استفاده کنین
KILL 51
AminSobati
دوشنبه 21 فروردین 1385, 11:40 صبح
از طرفی با دستور کیل من باید همه کیل شن دیگه
اگر مطمئن هستین که همه ارتباطشون با دیتابیس قطع شده، احتمالا فقط یک SPID مزاحم بیشتر وجود نداره. ضمنا این SPID در همه جا یکسان نیست و وجودش یک چیزه نادر هست. از طرفی، احتمالا یک برنامه دیگه داره از دیتابیس استفاده میکنه که این SPID وجود داره.
mzjahromi
دوشنبه 21 فروردین 1385, 11:57 صبح
کانکشن دیتا بیسم رو کلوز میکنم و کلیه پروسز ها رو کیل میکنم
با وجود این من فکر میکنم این خودشون هستن که به DataBase متصل هستن.
یه
use master
ابتدای کد اجرا کنید شاید نتیجه بگیرید.
AminSobati
دوشنبه 21 فروردین 1385, 20:10 عصر
من هم بر همین اعتقاد بودم ولی میگن Connection رو میبندم. به هر حال با USE Master موافقم
M.kavyani
سه شنبه 22 فروردین 1385, 10:10 صبح
من هم بر همین اعتقاد بودم ولی میگن Connection رو میبندم. به هر حال با USE Master موافقم
جالب اینجاست که یه شب داشتم در این مورد باهاش چت میکردم گفتم برو در مستر و عملیات ری استور رو انجام بده گفت نمیشه ولی به محض اینکه رفتم داخل بانک Pubs گفت مشکل حل شده :گیج: :گیج:
مشکلی که داره اینه که در ابتدا که برنامه اش شروع به کار کرد میتونه ری استور بکنه ولی همین که کمی باهاش کار کرد دیگه نمیتونه ری استور کنه :متفکر: حتی بعد از اجرای SP مربوط به Kill کردن User ها ...
AminSobati
سه شنبه 22 فروردین 1385, 13:49 عصر
ممکنه برنامه Connectionهایی ایجاد کرده باشه که از چشم شما دوره! البته این نمونه Conectionها در ADO 2.6 بیشتر رخ میداد، در ADO.NET احتمالش کمتره
M.kavyani
سه شنبه 22 فروردین 1385, 14:00 عصر
ممکنه برنامه Connectionهایی ایجاد کرده باشه که از چشم شما دوره! البته این نمونه Conectionها در ADO 2.6 بیشتر رخ میداد، در ADO.NET احتمالش کمتره
استاد میشه درمونش رو هم بگید؟؟
alinux_redhat
سه شنبه 22 فروردین 1385, 18:25 عصر
در مورد use master
باید بگم حتی در QA هم چند بار با master گیر داد و بعد با model کار کرد و بعد دوباره با master کار کرد علت رو نمیدونم
ali_kolahdoozan
سه شنبه 22 فروردین 1385, 19:00 عصر
اگر rollback بکنی دیگه نیازی به kill نیست
M.kavyani
سه شنبه 22 فروردین 1385, 19:02 عصر
اگر rollback بکنی دیگه نیازی به kill نیست
دستورش رو میگید؟؟؟ ممنون
ali_kolahdoozan
سه شنبه 22 فروردین 1385, 19:10 عصر
بله چاکرت هم هستم
"ALTER DATABASE databasename SET SINGLE_USER with ROLLBACK IMMEDIATE"
من که با این مشگلم حل شد .
alinux_redhat
سه شنبه 22 فروردین 1385, 22:16 عصر
حقیقتش من هم مثل محسن عزیز نمیدونم rollback چیه
اما خوب از اسمش میشه یه چیزایی فهمید
اما توجه بشه که من میخوام دیتا بیسم رو که بک آپ گرفتم ری استور کنم حالا شاید مربوط به یه ماه پیش باشه
اگر توضیح بیشتری راجع به rollback و کاربرد اون بدید ممنون میشم
ali_kolahdoozan
سه شنبه 22 فروردین 1385, 22:21 عصر
ببین کارها رو بیخودی سخت نکن این یک خط رئ بصورت sqlcommand بنویس و excute کن
ALTER DATABASE databasename SET SINGLE_USER with ROLLBACK IMMEDIATE
بعدش در یک sqlcommand دیگه backup رو اجرا کن و خلاص
AminSobati
سه شنبه 22 فروردین 1385, 22:51 عصر
استاد میشه درمونش رو هم بگید؟؟
از اونجاییکه خود ADO این کار رو انجام میده، خودش هم Connection رو میبنده، لذا دست ما نیست. در صورتیکه بسته نشه (خیلی خیلی نادر) باید KILL کرد.
AminSobati
سه شنبه 22 فروردین 1385, 22:56 عصر
ببین کارها رو بیخودی سخت نکن این یک خط رئ بصورت sqlcommand بنویس و excute کن
ALTER DATABASE databasename SET SINGLE_USER with ROLLBACK IMMEDIATE
بعدش در یک sqlcommand دیگه backup رو اجرا کن و خلاص
این دستور در حقیقت دیتابیس رو Rollback نمیکنه، بلکه Transaction کاربران در حال کار رو Rollback میکنه. در صورتی این پارامتر رو بکار ببرید که یقین دارید کاربر مهمی در حال کار نیست و اگر ارتباطی با دیتابیس برقراره، حتما مزاحم هستش، نه یک کاربر واقعی!
alinux_redhat
سه شنبه 22 فروردین 1385, 23:15 عصر
من این دستور رو انجام دادم اما باز هم ...
حتی دستور تنهای kill که یکی از دوستان گفته بود هم ...
نمی دونم باید چه کار کرد؟
alinux_redhat
سه شنبه 22 فروردین 1385, 23:29 عصر
راستی موقعی که میخوام پروسس رو kill کنم با استفاده ار آی دی
این error رو میده
Server: Msg 6104, Level 16, State 1, Line 1
Cannot use KILL to kill your own process.
در ضمن use master رو هم مینویس و به دیتا بیسم هم کانکت نیستم
ali_kolahdoozan
چهارشنبه 23 فروردین 1385, 06:25 صبح
خوب حالا یه چیز هست برای restore کردن از چه پارامترهایی استفاده می کنی . در ضمن وقتی آقای sobati هستند اصلا چرا از من می پرسی جلو قاضی و معلق بازی . اما به هر حال این دستور خدا بیامرز کار من رو راه انداخت . فقط برام بنویس برای ریستور چی مینویسی . در مورد جواب استاد برنامه من single user هست توی شبکه نیست . پس راحت از این دستور استفاده می کنم . در مورد شبکه هم باید پیغام داد به همه بعد هم اجراش کرد .
واما یک سوال از استاد وقتی این دستور اجرا و backup بر گردانده میشه هیچ طوری دیگه نمیشه با database ارتباط برقرار کرد باید حتما از برنامه بیایی بیرون دوباره بری تو . راحی داره ؟ چون دیدم برنامه های خیلی معتبر هم همین کار رو کردن خود micro soft هم در چند جا همین کار رو پیشنهاد کرده
alinux_redhat
چهارشنبه 23 فروردین 1385, 11:01 صبح
خوب پس از کنکاش های طولانی فهمیدم دستوری که ازش برای kill کردن استفاده میکنم همه
پروسز ها رو kill نمی کنه و کانکشن من به صورت sleepig هنوز هست
دستور رو اینجا مینویسم اگر مشکلی داره بهم بگید :
Declare @Var_spid Tinyint Declare spid_List Cursor FORWARD_ONLY For Select spid From sysprocesses Where loginame = 'filerpro' Open spid_List Fetch Next From spid_List into @Var_spid While @@Fetch_Status = 0 Begin Execute (' Kill ' + @Var_spid) Fetch Next From spid_List into @Var_spid End Close spid_List Deallocate spid_List
ali_kolahdoozan
چهارشنبه 23 فروردین 1385, 13:40 عصر
SqlCommand b_res2 = new SqlCommand();
b_res2.CommandText = "ALTER DATABASE AMLAK SET SINGLE_USER with ROLLBACK IMMEDIATE";
//
();
b_res.CommandText = "RESTORE DATABASE [amlak] FROM DISK ='" yourpath + "' with restart";
//
b_res3.CommandText = "ALTER DATABASE AMLAK SET MULTI_USER";
من عین مشگل شما رو داشتم با این سه خط حل شد
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.