PDA

View Full Version : Detach کردن DB در داخل برنامه



alex1000
چهارشنبه 02 اردیبهشت 1388, 17:53 عصر
سلام
دستان من یک برنامه دارم که توی اون میخوام با شروع برنامه بانک attach بشه و در پایان هم detach بشه. میدونم یک راهی هست که اینکار به صورت اتوماتیک انجام بشه اما من میخوام اینکارو به صورت دستی انجام بدم.
با sp_attach_db کار اتصال به بانک رو در ابتدای تابع main برنامه انجام میدم و میخوام با sp_detach_db در انتهای تابع main یعنی دقیقا قبل از اکولاد بسته کار detach رو انجام بدم.




SqlCommand objSqlCommand = new SqlCommand();
objSqlCommand.Connection = new SqlConnection(@"SERVER=.\SQLEXPRESS; DATABASE=master; Integrated Security=true");
objSqlCommand.Connection.Open();
objSqlCommand.CommandType = CommandType.StoredProcedure;
objSqlCommand.CommandText = "sp_detach_db";
objSqlCommand.Parameters.AddWithValue("@dbname", SqlDbType.NVarChar).Value = "DBNAME";
objSqlCommand.Parameters.AddWithValue("@skipchecks", SqlDbType.NVarChar).Value = "true";

objSqlCommand.ExecuteNonQuery(); // --> اینجا ارور میده
objSqlCommand.Connection.Close();
attach به درستی انجام میشه اما detach نه؟!!! ارور میده که بانک در حال استفاده است!!!
برنامه رو به صورت خط به خط و بدون اون spها انجام میدم. دقیقا تا وقتی به آکولاد بسته در تابع main اجرا نشه نمیشه بانک رو از روی sql server اونو detach کرد.
لطفا راهنماییم کنید.کجا باید دستور detach رو انجام بدم؟؟ آیا قبل از این دستور دستور خاصی نیاز تا تمام ارتباط ما رو با بانک قطع کنه؟؟

Ali_Mor
چهارشنبه 02 اردیبهشت 1388, 21:34 عصر
در کانکشن استرینگ pooling=False قرار یده و یا این رو بنویس

SqlClient.SqlConnection.ClearAllPools
احتمالا درست بشه

ibd_iran
پنج شنبه 03 تیر 1389, 17:42 عصر
سلام
دستان من یک برنامه دارم که توی اون میخوام با شروع برنامه بانک attach بشه و در پایان هم detach بشه. میدونم یک راهی هست که اینکار به صورت اتوماتیک انجام بشه اما من میخوام اینکارو به صورت دستی انجام بدم.
با sp_attach_db کار اتصال به بانک رو در ابتدای تابع main برنامه انجام میدم و میخوام با sp_detach_db در انتهای تابع main یعنی دقیقا قبل از اکولاد بسته کار detach رو انجام بدم.




SqlCommand objSqlCommand = new SqlCommand();
objSqlCommand.Connection = new SqlConnection(@"SERVER=.\SQLEXPRESS; DATABASE=master; Integrated Security=true");
objSqlCommand.Connection.Open();
objSqlCommand.CommandType = CommandType.StoredProcedure;
objSqlCommand.CommandText = "sp_detach_db";
objSqlCommand.Parameters.AddWithValue("@dbname", SqlDbType.NVarChar).Value = "DBNAME";
objSqlCommand.Parameters.AddWithValue("@skipchecks", SqlDbType.NVarChar).Value = "true";

objSqlCommand.ExecuteNonQuery(); // --> اینجا ارور میده
objSqlCommand.Connection.Close();
attach به درستی انجام میشه اما detach نه؟!!! ارور میده که بانک در حال استفاده است!!!
برنامه رو به صورت خط به خط و بدون اون spها انجام میدم. دقیقا تا وقتی به آکولاد بسته در تابع main اجرا نشه نمیشه بانک رو از روی sql server اونو detach کرد.
لطفا راهنماییم کنید.کجا باید دستور detach رو انجام بدم؟؟ آیا قبل از این دستور دستور خاصی نیاز تا تمام ارتباط ما رو با بانک قطع کنه؟؟

اگر ممکن کد attach کردن را برای من قرار دهید
با تشکر

moj_asghary
جمعه 04 تیر 1389, 12:53 عصر
سلام
برناتمه زیر کارایی که میخوای رو انجام میده !

http://www.barnamenevis.org/forum/showthread.php?t=228879