PDA

View Full Version : اتچ در اکسپرس



hojjat_gh
چهارشنبه 02 اردیبهشت 1388, 12:51 عصر
با سلام
دوستان من از این کدها که جناب رضوی گذاشتند برای اتچ کردن استفاده میکنم:

private void checkDB()
{
string csMaster = "Data Source=.\sqlexpress;Initial Catalog=Master;Integrated Security=True";
SqlConnection con = new SqlConnection(csMaster);
SqlCommand com = new SqlCommand("select * from sys.databases where name= 'DBx'", con);
con.Open();
object obj = com.ExecuteScalar();
if (obj == null)
{
MessageBox.Show("بانک اطلاعاتی برنامه در پایگاه داده قرار ندارد \n لطفا تا قرارگیری آن کمی مننظر بمانید","خطا",MessageBoxButtons.OK,MessageBoxIcon.Error);
string strCmd = "EXECUTE sp_attach_db @dbname,@filename1";
com.CommandText = strCmd;
com.Parameters.Clear();
com.Parameters.AddWithValue("@dbname", "DBx");
com.Parameters.AddWithValue("@filename1", Application.StartupPath + @"\DataBase\DBx.mdf");
com.ExecuteNonQuery();

com.CommandText = "select * from sys.databases where name= 'DBx'";
obj = com.ExecuteScalar();
if (obj != null)
{
MessageBox.Show("بانک اطلاعاتی با موفقیت بارگزاری شد");
}
}
con.Close();
}
واین کدها درسیستم مبدا چه با سورس و چه با ستاپ مشکلی ندارند
ولی زمانی که برنامه روی سیستم مقصد نصب میشه فایل mdf,Ldf رو کپی میکنه ولی موقع اجرا نمیتونه اون رو اتچ کنه و پیغام زیر رو میده:
CREATE FILE encountered operating system error 5(Access is denied.) while attempting to open or create the physical file 'D:\Program Files\Default Company Name\DBx\DataBase\DBx_log.LDF'.
Could not open new database 'DBx'. CREATE DATABASE is aborted.
File activation failure. The physical file name "F:\DBx 1388 01 30\bin\Debug\DataBase\DBx_log.LDF" may be incorrect.
این مسیر دومی(F:) تو پیغام خطا همون مسیر سیستم مبدا که فایل MDFبا موفقیت به دیتابیس اتچ شده
ایا کسی میدونه مشکل چیه؟
با تشکر

fat_roze2000
چهارشنبه 02 اردیبهشت 1388, 14:17 عصر
میشه از نرم افزارهای SQLServer2005_SSMSEE.msi و SSEUtil هم استفاده کرد

NewFoxStudent
چهارشنبه 02 اردیبهشت 1388, 15:40 عصر
دوست عزیز برای اتچ گردن دیتابیس نیازی به فایل log ندارید
فقط از فایل Data با پسوند MDF استفاده کنید و فایل Log با پسوند LDf رو از مسیر

'D:\Program Files\Default Company Name\DBx\DataBase\DBx_log.LDF'

حذف کنید
موقع اتچ کردن بانک Sql میخواد این فایل رو بسازه و چون فایل همنامش وجود داره نمیتونه این فایل رو ایجاد کنه
شما موقع ساختن ستاپ فقط فایل Data با پسوند mdf رو به پروژه اضافه کن درست میشه

hojjat_gh
شنبه 05 اردیبهشت 1388, 10:52 صبح
باسلام
من تو ستاپ فقط فایل mdf رو اضافه کردم ولی باز همون مشکل رو داره و پیغام پست یک رو میده
و یه نکته اینکه من دقیقا همون mdf رو که تو سیستم مبدا اتچ شده برا ستاپ بکار میبرم
(البته بعد از متوقف کردن اس کیو ال) و این mdf یه Ldf کنار خودش میسازه ومن این Ldf رو توستاپ قرار
نمیدم وبعد با اون پیغام مواجه میشم
ایا این ربطی به مشکل من داره؟

hojjat_gh
یک شنبه 06 اردیبهشت 1388, 12:02 عصر
با سلام
دوستان من میدونم که درباره اتچ زیاد بحث شده و شاید دوستان دوست ندارند
که رو این موضوع وقت بذارند ولی من نمیدونم که چرا این مشکل برا من هنوز حل نشده
من مشکل رو فهمیدم چیه ولی نمیدونم چطوری حلش کنم
مشکل اینجاست که زمانی که با سورس برنامه mdf رو اتچ کنیم(که Ldf رو هم کنار خودش میسازه) مسیر اتچ تو فایل exe ذخیره میشه و چون تو ستاپ از این فایل exe استفاده میشه رو هر سیستمی که برنامه نصب بشه فایل Ldf رو میخواد از همون مسیر در سیستم مبدا پیدا کنه که نمیتونه
حالا من نمیدونم دوستان چطوری این مشکل رو حل کردند؟

mohsen_csharp
یک شنبه 06 اردیبهشت 1388, 12:19 عصر
چرا به جای Attach از روش restore استفاده نمی کنید
http://barnamenevis.org/forum/showthread.php?t=153480
البته می تونید این برنامه رو طوری بسط بدید که قابلیت Attach و Detach رو هم داشته باشه.

hojjat_gh
پنج شنبه 10 اردیبهشت 1388, 10:50 صبح
با سلام وتشکر از همه دوستان
دوستان نکته خوبی که من فهمیدم ودوستان اشاره ای به اون نکردند اینه که زمانی که زمانی که از sqlexpress استفاده میکنید نیازی به قرار دادن کدهای اتچ تو برنامتون ندارید فقط کافیه mdfبرنامتون رو کنار فایل exe در ستاپ قرار بدید وفقط نکته دیگه انکه connectionstring رو کد زیر قرار بدید:

Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Ostad.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True
و دیگه مشکل بکاپ و ریستور هم نخواهید داشت
موفق باشید
این هم لینک حتما ببینید:
http://barnamenevis.org/forum/showthread.php?t=139529&highlight=setup+visual+studio