View Full Version : attach کردن database در زمان اجرا توسط install shield
naser2009
جمعه 17 مهر 1388, 02:41 صبح
سلام دوستان عزیز
من در نرم افزار 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شدن داشته باشم؟؟؟
ممنون...
kitaro
سه شنبه 21 مهر 1388, 11:01 صبح
دوست عزير براي اين کار کافيه در قسمت 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.
iekrang
سه شنبه 24 اردیبهشت 1392, 14:48 عصر
سلام، من هر دو راه رو چک کردم ولی خطا میده.
راه دوم رو که امتحان میکنم ، targetdir و StrRemoveLastSlash و MsiSetProperty رو نمیشناسه ! خطای undefined identifier میده.
کسی میدونه دلیلش چیه؟
احمد سامعی
یک شنبه 20 مرداد 1392, 17:37 عصر
دوستان کسی اگر به نتیجه رسیده به ما هم بگه من از Installsheild 2010 استفاده می کنم توی توضیحات بالا نفهمیدم دیتابیس کجا قرار بردم منظورم مسیر فیزیکی؟
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.