PDA

View Full Version : مشکل detach کردن دیتابیس در برنامه



ghrezahaj
جمعه 21 اسفند 1388, 21:44 عصر
من می خوام تو برنامم دیتابیس را detach کنم اما با اینکه کانکشنم با sql را بسته ام پیغام خطای it is currently in use داده می شه لطفا کمکم کنید مشکل چیه

cimiarnm
جمعه 21 اسفند 1388, 22:36 عصر
دوست عزيز شايد اين راه حل مشكل شما نباشد اما آيا اين احتمال هست كه همراه با برنامه خودتان محيط sql sstudio management را باز كرده و پايگاه داده خودتان را در آن باز كرده در حال مشاهده يا ويرايش آن باشيد ؟ اگر بله مشكل شما همين است اگر نه كدتان رو لطفا قرار دهيد تا با كمك اساتيد بررسي كنيم

slashslash2009
شنبه 22 اسفند 1388, 00:15 صبح
شما حتی اگه کانکشنتونم باز باشید نباید هیچ خطایی بده و detach کنه

hakelberfin
شنبه 22 اسفند 1388, 02:27 صبح
سلام


شما حتی اگه کانکشنتونم باز باشید نباید هیچ خطایی بده و detach کنه

به نظر من این گفته درست نیست.
از این دستورات استفاده کن ببین درست میشه


ServerConnection MyserverConnection = newServerConnection(MysqlConnection);
Server Myserver = newServer(MyserverConnection);
Database currentDb = server.Databases[MyDataBaseName];
if (currentDb != null)
server.KillAllProcesses(MyDataBaseName);

slashslash2009
شنبه 22 اسفند 1388, 08:28 صبح
من ازین کد استفاده میکنم و مشکلی هم پیش نمیاد

SqlConnection con = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=master;Integrated Security=True");
SqlCommand com = new SqlCommand();
com.CommandText = "sp_detach_db @dbname = N'databasename'";
com.Connection = con;
con.Open();
com.ExecuteNonQuery();
MessageBox.Show("ارتباط با بانک اطلاعاتی قطع شد");
con.Close();

seven7777777
شنبه 22 اسفند 1388, 13:33 عصر
البته ببخشید اینو میگم ولی کاره دیگه ، شاید درست باشه .
سوال : حتما باید یه دیتابیس اتچ بشه تا بشه دیتچش کرد ؟؟؟

اگه آره ، آیا شما دیتابیستو تو برنامه قبلن اتچ کردی یا با ویزارد یا با روش دیگه ای باهاش ارتباط برقرار کردی ؟
اگه نه ، نمی دونم !!!

ghrezahaj
یک شنبه 23 اسفند 1388, 07:27 صبح
دوستان مشکل به نظر خودم هم عجیبه با trce برنامه درست بعد از اولین open کانکشن را پیگیری کردم و درست بعد از اولین close تو sql فرمان detach یا restore را اجرا کردم اما پیغام Connection property has not been initialized. را میده اینم کانکشنم
Data Source=localhost;database=master;Integrated Security=true

slashslash2009
یک شنبه 23 اسفند 1388, 07:43 صبح
سعی کنید قبل از detach کردن کار دیگهای با دیتا بیس انجام ندین و بعد از ورود به برنامه detach کنید

ghrezahaj
یک شنبه 23 اسفند 1388, 07:44 صبح
دوستان پیغام قبلی را اصلاح میکنم :
Exclusive access could not be obtained because the database is in use.
RESTORE DATABASE is terminating abnormally.

ghrezahaj
یک شنبه 23 اسفند 1388, 07:51 صبح
سعی کنید قبل از detach کردن کار دیگهای با دیتا بیس انجام ندین و بعد از ورود به برنامه detach کنید

تنها کاری که انجام میدم یه select گیری ساده است اگه قبل از باز کردن کانکشن detach کنم مشکلی به وجود نمیاد

slashslash2009
یک شنبه 23 اسفند 1388, 08:03 صبح
اون سلکتو نگیر ببین درست میشه همون سلکت کانکشنو باز میکنه

araz_pashazadeh
شنبه 16 مرداد 1389, 11:43 صبح
من ازین کد استفاده میکنم و مشکلی هم پیش نمیاد

SqlConnection con = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=master;Integrated Security=True");
SqlCommand com = new SqlCommand();
com.CommandText = "sp_detach_db @dbname = N'databasename'";
com.Connection = con;
con.Open();
com.ExecuteNonQuery();
MessageBox.Show("ارتباط با بانک اطلاعاتی قطع شد");
con.Close();
سلام دوست عزیز
من پرسو جوی شما را در اسکیول اجرا کردم ولی باز پیغام
Msg 3703, Level 16, State 3, Line 1
Cannot detach the database 'Accounting(T.N.T)' because it is currently in use.
را داد ممنون میشم اگه راهنمایی کنین:لبخندساده:

aabedi25
سه شنبه 10 خرداد 1390, 12:28 عصر
http://barnamenevis.org/showthread.php?269553-%D9%82%D8%B7%D8%B9-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D9%87%D8%A7-%D8%A8%D8%A7-%D8%A8%D8%A7%D9%86%DA%A9-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA%DB%8C/page2

mehdi.safavie
جمعه 16 مرداد 1394, 08:43 صبح
درود

از این فرمان ها استفاده کنید

--Kick all users off of the database NOW
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE

--Kick all but after 60 seconds
ALTER DATABASE YourDatabase SET SINGLE_USER WITH ROLLBACK AFTER 60 SECONDS

--restore connection to users
ALTER DATABASE YourDatabase SET MULTI_USER

http://serverfault.com/questions/76432/how-can-i-detach-a-database-that-is-in-use