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

نام تاپیک: attach کردن database در زمان اجرا توسط install shield

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آبان 1386
    محل زندگی
    مشهد
    پست
    232

    attach کردن database در زمان اجرا توسط install shield

    سلام دوستان عزیز
    من در نرم افزار install shield به راحتی در زمان uninstall اسکریپ زیر را اجرا می کنم و دیتابیس را detach می کنم.
    go
    use master
    Exec sp_detach_db 'reminderdb','true'
    اما می خوام در زمان install هم توسط یک اسکریپ دیگر مانند زیر دیتابیسم را به بانک attach کنم.
    go
    use master
    EXEC sp_attach_db 'ReminderDb',
    'ReminderDb.mdf',
    'ReminderDb_log.ldf'
    چگونه از داخل برنامه setup مسیر دهی درستی برای فایل های mdfو ldf جهت attachشدن داشته باشم؟؟؟
    ممنون...

  2. #2
    کاربر تازه وارد آواتار kitaro
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    اصفهان
    پست
    32

    نقل قول: attach کردن database در زمان اجرا توسط install shield

    دوست عزير براي اين کار کافيه در قسمت Server Configuration -> SQL Scripts يه اسکريپت جديد بسازين و بعد کد زير رو در برگه Script کپي کنيد:


    use [master]
    GO

    CREATE DATABASE TESTDB ON
    ( FILENAME = N'%appfolder%\DB\DCMDB.mdf' ),
    ( FILENAME = N'%appfolder%\DB\DCMDB_log.ldf' )
    FOR ATTACH
    GO


    بعد توي برگه Text Replacement يه عنوان جديد بسازين:

    Find What: %appfolder%
    Replace With: [TARGETDIR]




    البته ممکنه اون کد مسير فايل رو براي Attach پيدا نکنه در نتيجه شما مجبوريد راه دوم رو امتحان کنيد که 100% جواب ميده:


    use [master]
    GO

    CREATE DATABASE TESTDB ON
    ( FILENAME = N'%dbfolder%\DB\DCMDB.mdf' ),
    ( FILENAME = N'%dbfolder%\DB\DCMDB_log.ldf' )
    FOR ATTACH
    GO


    در مرحله بعد وارد برگه Text Replacement بشين و يه replacement با مشخصات زير وارد کنيد:

    Find What: %dbfolder%
    Replace With: [Z_TARGETDIR]


    تابع زير رو در Install Script ايجاد کنيد :

    export prototype GetTARGETDIR(HWND);

    function GetTARGETDIR(hMSI)
    STRING svPropValue,svTemp;
    NUMBER nvBuffer;
    begin
    svTemp = TARGETDIR;
    StrRemoveLastSlash ( svTemp );
    MsiSetProperty(hMSI,"Z_TARGETDIR", svTemp);
    nvBuffer = 256;



    بعد توي قسمت Property Manager يه مشخصه به اسم Z_TARGETDIR ايجاد کن.

    و در نهايت يه Custom Action از نوع New InstallScript بساز و اسم تابع GetTARGETDIR رو بهش بده و Install Exec Sequence رو برابر با <First Action> قرار بده.

    تموم شد.
    روش دوم سخت تره ولي OK.

  3. #3

    نقل قول: attach کردن database در زمان اجرا توسط install shield

    سلام، من هر دو راه رو چک کردم ولی خطا میده.

    راه دوم رو که امتحان میکنم ، targetdir و StrRemoveLastSlash و MsiSetProperty رو نمیشناسه ! خطای undefined identifier میده.

    کسی میدونه دلیلش چیه؟

  4. #4

    نقل قول: attach کردن database در زمان اجرا توسط install shield

    دوستان کسی اگر به نتیجه رسیده به ما هم بگه من از Installsheild 2010 استفاده می کنم توی توضیحات بالا نفهمیدم دیتابیس کجا قرار بردم منظورم مسیر فیزیکی؟

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

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