نمایش نتایج 1 تا 7 از 7

نام تاپیک: اتچ در اکسپرس

  1. #1

    اتچ در اکسپرس

    با سلام
    دوستان من از این کدها که جناب رضوی گذاشتند برای اتچ کردن استفاده میکنم:
    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,Messag eBoxIcon.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با موفقیت به دیتابیس اتچ شده
    ایا کسی میدونه مشکل چیه؟
    با تشکر

  2. #2
    کاربر دائمی آواتار fat_roze2000
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    اصفهان
    سن
    44
    پست
    110

    نقل قول: اتچ در اکسپرس

    میشه از نرم افزارهای SQLServer2005_SSMSEE.msi و SSEUtil هم استفاده کرد

  3. #3
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تهران
    پست
    1,025

    نقل قول: اتچ در اکسپرس

    دوست عزیز برای اتچ گردن دیتابیس نیازی به فایل log ندارید
    فقط از فایل Data با پسوند MDF استفاده کنید و فایل Log با پسوند LDf رو از مسیر
    'D:\Program Files\Default Company Name\DBx\DataBase\DBx_log.LDF'


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

  4. #4

    نقل قول: اتچ در اکسپرس

    باسلام
    من تو ستاپ فقط فایل mdf رو اضافه کردم ولی باز همون مشکل رو داره و پیغام پست یک رو میده
    و یه نکته اینکه من دقیقا همون mdf رو که تو سیستم مبدا اتچ شده برا ستاپ بکار میبرم
    (البته بعد از متوقف کردن اس کیو ال) و این mdf یه Ldf کنار خودش میسازه ومن این Ldf رو توستاپ قرار
    نمیدم وبعد با اون پیغام مواجه میشم
    ایا این ربطی به مشکل من داره؟

  5. #5

    نقل قول: اتچ در اکسپرس

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

  6. #6
    کاربر دائمی
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    آستارا-تهران
    پست
    357

    نقل قول: اتچ در اکسپرس

    چرا به جای Attach از روش restore استفاده نمی کنید
    https://barnamenevis.org/showthread.php?t=153480
    البته می تونید این برنامه رو طوری بسط بدید که قابلیت Attach و Detach رو هم داشته باشه.

  7. #7

    نقل قول: اتچ در اکسپرس

    با سلام وتشکر از همه دوستان
    دوستان نکته خوبی که من فهمیدم ودوستان اشاره ای به اون نکردند اینه که زمانی که زمانی که از sqlexpress استفاده میکنید نیازی به قرار دادن کدهای اتچ تو برنامتون ندارید فقط کافیه mdfبرنامتون رو کنار فایل exe در ستاپ قرار بدید وفقط نکته دیگه انکه connectionstring رو کد زیر قرار بدید:
    Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Ostad.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True

    و دیگه مشکل بکاپ و ریستور هم نخواهید داشت
    موفق باشید
    این هم لینک حتما ببینید:
    https://barnamenevis.org/showth...+visual+studio

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •